3

共有設定を使用して編集テキストから名前を変更しようとする小さなプロジェクトを作成しました。ここに私のコードがあります

SharePreferenceOwnActivity.java

public class SharePreferenceOwnActivity extends Activity {


    Button b1;
    TextView t1;


    /** Called when the activity is first created. */@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


        b1 = (Button) findViewById(R.id.b1);
        t1 = (TextView) findViewById(R.id.t1);
        LoadPreferences();




        b1.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                Toast.makeText(getApplicationContext(), "Settings", Toast.LENGTH_SHORT).show();
                Intent intent = new Intent().setClass(SharePreferenceOwnActivity.this, SharepreferenceActivity.class);
                startActivity(intent);

            }
        });

    }
    private void LoadPreferences() {
        SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
        String strSavedMem1 = sharedPreferences.getString("MEM1", "");
        t1.setText(strSavedMem1);

    }
}

SharepreferenceActivity.java

public class SharepreferenceActivity extends Activity {


    EditText e1;
    Button b2;
    /** Called when the activity is first created. */@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.settings);


        e1 = (EditText) findViewById(R.id.e1);
        b2 = (Button) findViewById(R.id.b2);


        b2.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                SavePreferences("MEM1", e1.getText().toString());
                Intent intent = new Intent().setClass(SharepreferenceActivity.this, SharePreferenceOwnActivity.class);
                startActivity(intent);

            }
        });


    }

    private void SavePreferences(String key, String value) {
        SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putString(key, value);
        editor.commit();
    }
}

ここでは、編集テキストはテキストビューを変更しません。:(なぜですか?エラーが発生しませんでした

4

4 に答える 4

4

次のステートメントに問題があります。

SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);

Googleドキュメントによると

上記は、このアクティビティにプライベートな設定にアクセスするための SharedPreferences オブジェクトを取得します

だからあなたがしたエラーは

プライベートな設定オブジェクトで設定しています SharepreferenceActivity

プライベートな設定オブジェクトから読み込もうとしていますSharePreferenceOwnActivity

だから解決策は

交換

SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);

SharedPreferences sharedPreferences = getSharedPreferences("MyPref",
                                      Context.MODE_PRIVATE);

両方のアクティビティで。

于 2012-06-28T06:25:33.980 に答える
1
SharedPreferences sharedPreferences = PreferenceManager
                .getDefaultSharedPreferences(getApplicationContext());

String strSavedMem1 = sharedPreferences.getString("MEM1", "");
t1.setText(strSavedMem1);

両方のアクティビティで、この方法でSharedPreferencesを宣言してみてください。

SharedPreferences sharedPreferences = PreferenceManager
                .getDefaultSharedPreferences(getApplicationContext());

SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString(key, value);
    editor.commit();

そして、両方のクラスでstartActivity()を呼び出すとき。電話してみてください

finish();

両方のクラスで

于 2012-06-28T06:15:09.070 に答える
1

LoadPreferences()SharePreferenceOwnActivity アクティビティの onResume() でメソッドを呼び出します。

 @Override
    protected void onResume() {
        super.onResume();
        // Call here
       LoadPreferences();
    }

SavePreferences および LoadPreferences メソッドを次のように変更します。

SharepreferenceActivity アクティビティ内:

private void SavePreferences(String key, String value) {
SharedPreferences sharedPreferences = getSHaredPreferences("aapname",Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
    }
}

SharePreferenceOwnActivity アクティビティ内:

private void LoadPreferences() {
SharedPreferences settings = getSharedPreferences("aapname",Context.MODE_PRIVATE);
settings.getString("MEM1", "");
t1.setText(strSavedMem1);
}
于 2012-06-28T06:06:27.003 に答える
1

取得している 2 つの設定は、一方のアクティビティから他方のアクティビティに表示されません。それ以外の

getPreferences(MODE_PRIVATE);

使用する

getSharedPreferences("myPreferences", Context.MODE_PRIVATE);

"myPreferences"好きなように変更できます。どこかで静的文字列として定義する必要があります。

于 2012-06-28T06:13:56.170 に答える