0

私のsettings.javaと私のfragment.javaがあります。

フラグメント(私のsettings.javaに存在する)には、ビューを設定するためのランダム化された番号があります。これは完璧に機能します。ランダムなintから共有設定から引き出されたものに変更しようとしています。私のsettings.javaにはメソッドがあります:

public int getHour() {
        SharedPreferences settings = getSharedPreferences("My_Prefs",
                MODE_PRIVATE);
        int timeout = settings.getInt("timeout_hour", 8);
        return timeout;
    }

そして、私はこれを私のfragment.javaで次のように呼び出しますが、 ...settings.getHour(); これによりクラッシュします。単純にランダムな int (任意の int) に置き換えると...8、プログラムは完全に実行されます。数値 8 しかないときにアプリが実行されるのにgetHour()、数値 (この場合は 8) を返すと失敗するのはなぜですか。これはフラグメントに関するある種の制限ですか?

4

1 に答える 1

0

settings は getHour() 関数のローカル変数であるためです。フラグメント内でアクセスしたい場合は、それをフィールドにして、パブリック getter 関数 getSettings() を提供します。次に、アクティビティ インスタンスをフラグメントで取得します。

activity = (Settings) getActivity();

設定にアクセスする

activity.getHour()

フラグメント内。

于 2012-12-12T12:39:51.783 に答える