2011-11-12 16 views
23

私のJavaクラスでは、strings.xmlから文字列リソースを使いたいと思います。私は以下のように使用する必要があり、そのためのandroid Javaクラスで文字列リソースを使用する方法

getString(R.string.address) 

私のクラスは、その撮影活動である場合。しかし、私のクラスは単純なJavaクラスですが、どうすればそこで使うことができますか?

可能ですか? ありがとう

+0

あなたのプロジェクトがAndroidプロジェクトである場合は、それを使用することができます。あなたはそれを試してみましたか?それを使ってみてください。 –

+4

あなたが答えを受け入れたときのあなたの論理が何か不思議です。 –

+0

+1(12 more to go) – MKJParekh

答えて

30

あなたのJavaクラスから

。だから、クラスをアクティビティから呼び出して、パラメータcontextを与え、クラスコンストラクタ内でそのコンテキストを使用して文字列リソースを取得するだけです。

カスタムクラスでは、リソースIDを取得するためにプロジェクトのR名前空間をインポートする必要があります。そして、あなたはあなたのカスタムApplicationクラスで

public class App extends Application{ 

    private static Context mContext; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     mContext = getApplicationContext(); 
    } 

    public static Context getContext(){ 
     return mContext; 
    } 
} 

を静的Application Contextを作成することができ、実際の文字列

context.getString(R.string.COOL_STRING) 
+13

この回答は不完全です - 質問がまだ残っている人には、リソースIDを取得するためにプロジェクトのR名前空間をインポートする必要があります。例)import com.myappdomain.R 次に実際の文字列を取得する context.getString(R.string.SOME_STRING) –

+1

@AndroidAddict +1あなたのために、あなたは頭痛を救う! – Mirko

+0

@AndroidAddict +1。あなたは答えを編集する必要があります – Br0thazS0ul

16

アクティビティクラスのコンテキストをjavaクラスに渡してリソースにアクセスできます。あなたのActivityクラス

Helper helper = new Helper(this); 

クラスは、コンテキストを持っていないと、コンテキストが必要とされている文字列リソースを使用するように

public class Helper { 

    Helper(Context c){ 
     c.getString(R.string.address); 
    } 
} 
8

を取得する

import com.myrandomapp.R; 

は、次に、あなただけの任意のリソース値を取得するためにApp.getContext().getResources()を呼び出す必要があります。

このContextApplicationタイプなので、このContextは使い物にならないことがあります。詳細はthisをお読みください。あなたはこの行を追加する場合

0

あなたは完了できます。

// this is the object itself, and idString is the ID String bound to the literal. 
this.getString(R.string.idString) 

私はこのコメントはあなたを助け願っています!

Brs。

関連する問題