2

変数をどこかに保存する方法を見つけようとして夢中になっているので、別のアクティビティに切り替えてから再び戻ると、変数にはまだこの値が含まれています。少し前に共有設定を使用してこれを行いましたが、これは悪い解決策でした。これは必要以上に永続的であり、正しい方法ではありませんでした.

アクティビティ 1 で特定のボタンが押されると、インテントを介してアクティビティ 2 が開き、アクティビティ 2 の文字列に値が設定されます。別のアクティビティに移動するか、[戻る] ボタンを押してからアクティビティ 2 に戻ると、文字列は初期値にリセットされます。

私が試してみました:

共有設定 (うまくいきましたが、良くはありません) 静的変数 (違いはないように見えました。何か間違ったことをしているのかもしれません) 保存されたインスタンス状態と復元状態メソッドを次のように使用します。

 @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
     savedInstanceState.putString(destination, des);
        super.onSaveInstanceState(savedInstanceState);
    }


 @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        des = savedInstanceState.getString(destination);
    }

私はこれを行う方法がわからないことを認めるところまで来ており、コードを一緒にフランケンシュタイン化することが他の何よりも問題を引き起こしていますが、今のところ地平線上にピッチフォークはありません.

アクティビティ間で文字列内に値を保存するために、経験豊富なプログラマーは何を推奨していますか?

4

2 に答える 2

3

あなたはそれをextrausingとして渡すことができますIntent

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("key", value); // where key is whatever you want to name it 
                              //and will be used to retrieve it in the next 
                              //activity and value is the actual value of your string
startActivity(intent);

次に、2番目のアクティビティで値を取得します

Intent curIntent = getIntent();
String variableName = curIntent.getStringExtra("key");

インテント

于 2013-03-14T00:24:39.553 に答える
1

もう 1 つのオプションは、Activity を新しいクラス (SuperActivity など) で拡張することです。次に、後続の各アクティビティ クラスで、SuperActivity クラスを拡張します。グローバルにアクセスできるようにしたい項目を SuperActivity クラスに配置します。

これにより、新しいアクティビティごとに SuperActivity クラスが構築されることに注意してください。そのため、動的変数を初期化する必要があります。ただし、静的変数は実装ごとに維持されます。

価値があるので、インテントを介して渡すデータを置き換えるためにこれを使用しません。これにより、すべてのアクティビティに、SuperActivity に含まれるすべての変数が含まれます。そのため、アクティビティのすべて (またはほぼすべて) で変数が必要でない限り、インテントを介して渡すことをお勧めします。

于 2013-03-14T01:12:29.593 に答える