2011-07-11 10 views
0

これは小さな問題のように思えるかもしれませんが、どう対処するのか分かりません。グローバル変数をonCreateメソッドから変更する

xmlファイルに文字列配列を作成しました。次に、私は[]文字列の中にこの配列をインポートすると、これは私がそれを行う方法である:私はトーストを経由してテストした

static String[] rlsMixTitleArr = new String[] {}; 

:として

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.releases); 

    // array from XML 
    String[] rlsMixTitleArr0 = getResources().getStringArray(R.array.releasesMixTitle); 
    rlsMixTitleArr = rlsMixTitleArr0; 

    // rest of program... 
} 

rlsMixTitleArrは、この方法の上に宣言されていますグローバル変数rlsMixTitleArrが実際に正しく更新されるというメッセージ。しかし、問題は、別のメソッド(onCreateではなく)からrlsMixTitleArrにアクセスしようとすると、まったく更新されていないのと同様です(上のように宣言されているので空の配列です)。 onCreateは、プログラムの開始時に最初に起こるものなので、グローバル変数は更新され、他のメソッドでも使用される可能性があると考えるべきです。そして、私が知る限り、onCreateメソッドの上のリソースから何かを得ることはできません。だから私は今立ち往生している。

どのように機能させるには?

+0

他にどのような方法でアクセスしようとしていますか? (onCreate()の前に呼び出されるものは想像できません)。また、配列を 'rlsMixTitleArr'に直接ロードしない特別な理由もありますか? –

答えて

0

代わりに、静的配列のアクセサーを作成し、その配列に値が設定されていることを確認してください。そのようにすると、イベントハンドラではなく、必要に応じて配列が作成されます。は、それを作成する前ににする必要があります。

static String[] rlsMixTitleArr = null; 


public static String[] getRlsMixTitleArray(){ 
    if (rlsMixTitleArray == null) { 
     rlsMixTitleArray = getResources().getStringArray(R.array.releasesMixTitle); 
    } 

    return rlsMixTitleArray; 
} 
+0

答えをありがとうが、私はそれがうまくいかないことは恐れている。まず、メソッドから「静的」を削除して、エラーのない状態にする必要がありました。次に、このメソッドを呼び出すと、NullPointerExceptionが発生します。 – eightx2

+0

ああ... getResources()はインスタンスメソッドですか?なぜオブジェクトのコンストラクタの配列集団行を呼び出さないのですか? //編集 - それでも問題が発生する前にそれを探して解決しません。 getResources()を静的にできますか? – Angie

+0

私はおそらく別の方法に行くだろう - 可能なら統計を取り除く。 rlxMixTitleArrは静的である必要がありますか? – mouser

関連する問題