私のアプリのいくつかのクラスから、を使用せずに文字列のグローバル値を取得したいと思いますContext
。この変数をApplication
クラスSharedPreferences
またはで宣言する場合は、値の取得/設定にStrings.xml
使用する必要があります。Context
この投稿から理解できるように、シングルトンの使用は良い習慣ではありません。を使用せずにグローバル変数を使用するための良い方法はありますか?context
私のアプリのいくつかのクラスから、を使用せずに文字列のグローバル値を取得したいと思いますContext
。この変数をApplication
クラスSharedPreferences
またはで宣言する場合は、値の取得/設定にStrings.xml
使用する必要があります。Context
この投稿から理解できるように、シングルトンの使用は良い習慣ではありません。を使用せずにグローバル変数を使用するための良い方法はありますか?context
グローバルクラスを作成するか、「意味のある」場所に文字列を格納します。たとえば、Shoesクラスがある場合は、次のように実行できます。
public class Shoes {
public static class BRAND {
public static final String NIKE = "nike";
public static final String REBOK = "rebok";
public static final String ADDIDAS = "addidas";
}
private String brand;
public Shoes() {}
public void setBrand(String brand) {
this.brand = brand;
}
public String getBrand() {
return this.brand;
}
}
今、あなたはこれを行うことができます:
public static void main(String[] args) {
Shoes myShoes = new Shoes();
myShoes.setBrand(Shoes.BRAND.NIKE);
}
Androidにはこのようなものがたくさんあります。代わりに列挙型を使用するとさらに良いでしょう。お役に立てれば。
アップデート
セッターとゲッターを使用したい場合は、2つの解決策があります。
静的初期化子と静的メソッドを利用できます。次のように、最後の宣言を削除して、文字列を使用して必要な操作を行うことができます。
public class Shoes {
public static class BRAND {
public static String NIKE;
public static String REBOK;
public static String ADDIDAS;
static {
NIKE = "nike";
REBOK = "rebok";
ADDIDAS = "addidas";
}
}
private String brand;
public Shoes() {}
public void setBrand(String brand) {
this.brand = brand;
}
public String getBrand() {
return this.brand;
}
}
または、適切なカプセル化手法を使用して、これを実行します。
public class Shoes {
public static class BRAND {
private static String NIKE;
private static String REBOK;
private static String ADDIDAS;
static {
NIKE = "nike";
REBOK = "rebok";
ADDIDAS = "addidas";
}
public static String getNIKE() {
return NIKE;
}
public static void setNIKE(String name) {
NIKE = name;
}
public static String getREBOK() {
return REBOK;
}
public static void setREBOK(String name) {
REBOK = name;
}
public static String getADDIDAS() {
return ADDIDAS;
}
public static void setADDIDAS(String name) {
ADDIDAS = name;
}
}
private String brand;
public Shoes() {}
public void setBrand(String brand) {
this.brand = brand;
}
public String getBrand() {
return this.brand;
}
}
ただし、注意する必要があります。コンテキストを取得できないためにこれを実行している場合は、何かが不足しています。コンテキストはどこからでも取得できます。システムによってインスタンス化されたオブジェクトには、パラメーターとしてコンテキストが与えられます。独自のカスタムオブジェクトがある場合は、オブジェクト自体(this)を使用してApplicationContextをパラメーターまたはクラスとして渡すことができます。
値をstrings.xmlファイルに保存します。そして、このように呼びます。
String yourString = Context.getResources().getString(R.string.your_string);