2017-06-27 4 views
-1

Androidでかなり新しく、静的定数を管理する適切な方法がわかりません。つまり、いくつかのJavaクラスとアクティビティでいくつかの定数(例えば、COMMAND_BACK = 100)を使用する必要があります。個々の活動の属性としてそれらを宣言するのは美しいわけではありませんので、これを行う正しい方法は何ですか? strings.xmlでそれらを宣言についていえAndroidで静的パラメータを使用する正しい方法

私は、それは事前に適しどちら...

感謝していないようです。

+0

にそれにアクセスすることができ、共通のクラスを作成します。その場合のコンテントについて – MRX

+0

@MRX例を挙げてそれを説明できますか? –

+0

何が分かりませんか?パブリックstatic final int COMMAND_BACK = 100; Classname.COMMAND_BACKを参照してください。 – JoeHz

答えて

1

あなたはこのようなクラスを行うことができます。

public final class AppConstants { 
    //put all the constant here 
    // Eg : 
    public static final int SPLASH_TIME = 1000; 
    } 
1

resource.xmlファイルで宣言することの欠点は、値を受け取るコンテキストが必要だということです。これは、コンテキストクラス内でこれらの値が必要な場合に限り有効です。それ以外の場合は、渡す必要があります。

アンドロイドOS自体が静的フィールドを使用しているので、上品なソリューションはApplicationクラスを拡張します。

1

プロジェクトに定数クラスを追加します

public class Constants { 
    public static final String STRING1 = "First String"; 
    public static final String STRING2 = "Second String"; 
    public static final int INTEGER1 = 1; 
    public static final float FLOAT1 = 0.1f; 
} 


// Use 
textView.setText(Constants.STRING1); 
1

宣言

public final class ConstantClass { 

    public final static int COMMAND_BACK = 100; 
} 

使用

int num = ConstantClass.COMMAND_BACK; 
0

すべての定数を宣言できる共通のインターフェイスを作成します。定数は、モードをさらにきれいにするために、ここでグループ化することもできます。

public interface Constants { 
    public interface XYZ{ 
     public static final int A= 1; 
     public static final int B= 2; 
    } 

    public interface REPORT_TYPE_FLAGS{ 
     public static final String C= "0"; 
     public static final String D= "1"; 
    } 
} 
0

別のエレガントな方法は、他の内側のサブクラス

`private final class Constant { 

public static class TypeOne { 
    public static final String NAME = "Type 1"; 
    public static final int CODE = 1; 
} 

public static class TypeTwo { 
    public static final String NAME = "Type 2"; 
    public static final int CODE = 2; 
} 
} 

`

で一定のクラスを定義することですそして、あなたは、このように

`String typeOneName = Constant.TypeOne.NAME; 
int typeTwoCode = Constant.TypeTwo.CODE; 
` 
関連する問題