3

Settings.javaユーザーが下のログイン画面に入力した名前を、別の FragmentActivity から呼び出されるsharedPreferenceによって読み取られるに保存しようとしています。TestFragment2.javaSampleTabsDefault.java

ログイン画面 設定.java

    private void savePrefs(String key, boolean value) {
        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
        Editor edit = sp.edit();
        edit.putBoolean(key, value);
        edit.commit();
    }

    private void savePrefs(String key, String value) {
        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
        Editor edit = sp.edit();
        edit.putString(key, value);
        edit.commit();
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        savePrefs("CHECKBOX", cb.isChecked());
        if (cb.isChecked())
            savePrefs("NAME", et.getText().toString());
        Intent myIntent = new Intent("com.test.SAMPLETABSDEFAULT");
        startActivity(myIntent);

        finish();
    }

}

Intent myIntent = new Intent("com.test.SAMPLETABSDEFAULT");startActivity(myIntent);SampleTabsDefault.java正常にロードされ、それが呼び出すすべてのフラグメントも同様に ロードされます。

 class NavTabs extends FragmentPagerAdapter {
    public NavTabs(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        switch(position)
        {
                case 0:
                     TestFragment fragment = new TestFragment();  
                     return fragment;

                 case 1:
                     TestFragment2 fragment2 = new TestFragment2();  
                     return fragment2;

          }

                     TestFragment3 fragment3 = new TestFragment3();  
                     return fragment3;


    }

左右にスクロールして、以下に示すフラグメントの TestFragment2.java に到達できます....しかし、それが読み取れないか、sharedPreferences内部のTestFragment2.java SampleTabsDefault.java および TestFragment2.java TestFragment2.javaを適用して非常に骨の折れる動きをしています

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View myView = inflater.inflate(R.layout.fragment_2, container, false);
     text = (TextView)myView.findViewById(R.id.textView1);
     et = (TextView)myView.findViewById(R.id.textView3);
     cb = (CheckBox) myView.findViewById(R.id.checkBox1);


    loadPrefs();
    return myView;

}

private void loadPrefs() {
    SharedPreferences sp = getActivity().getSharedPreferences("CHECKBOX", 0);
    boolean cbValue = sp.getBoolean("CHECKBOX", false);
    String name = sp.getString("NAME", "YourName");
    if(cbValue){
        cb.setChecked(true);
    }else{
        cb.setChecked(false);
    }
    et.setText(name);
}

「setText();」を介しTestFragment2.javaて読み取りと適用を試みています textViewで行うのと同じ方法で sharedPreferences Settings.java。のコードはSettings.java機能し、最後にアプリケーションが実行されたときにユーザーが入力した名前を String name = sp.getString("NAME", "YourName");ロードして表示しますが、同じコードブロックで YourName を返しますsharedPreferenceTestFragmnet2.javaString name = sp.getString("NAME", "YourName");

どんな助けでも大歓迎です、ありがとう!!

4

1 に答える 1

9

呼んでいると思います

SharedPreferences sp = getActivity().getSharedPreferences("CHECKBOX", 0);

TestFragment2 のloadPrefs()メソッドで誤って

ドキュメントから の最初のパラメータ(名前)は次のとおりです。

必要な設定ファイル。この名前の設定ファイルが存在しない場合は、エディターを取得して (SharedPreferences.edit())、変更をコミットする (Editor.commit()) ときに作成されます。

したがって、TestFragment2 で「CHECKBOX」という新しい設定ファイルを作成しているようです。

おそらくloadPrefs()、Settings.java で見つかったのと同じ使用法に変更して、以前に使用したのと同じ設定を次のように呼び出すことができます。

private void loadPrefs() {
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity())
    boolean cbValue = sp.getBoolean("CHECKBOX", false);
    String name = sp.getString("NAME", "YourName");
    if(cbValue){
        cb.setChecked(true);
    }else{
        cb.setChecked(false);
    }
    et.setText(name);

}

于 2013-02-22T20:06:06.740 に答える