1

別のアクティビティを呼び出すときに、現在のアクティビティに保存した変数が返されたときに存在することを確認できますか?

new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapter, View item, int pos, long id)  {
        Intent i = new Intent(Activity1.this, Activity2.class);
        i.putExtra("position", pos); // 1
        position = pos; // 2
        startActivityForResult(i, REQUEST_CODE); // brings up the edit item activity
    }
});

上記のコードでは、現在のアクティビティ インスタンス フィールドに格納することによって (2) を使用できますか、または (1) を使用getIntExtra()して値を渡し、その値onActivityResult()を回復するために使用する必要がありますか?

4

4 に答える 4

0

私のアドバイス:Intent対象のデータ項目を一意に識別するのに十分な情報を渡してください。アイテムの順序が変更されたり、他のアイテムがリストに追加/削除されたりすると、位置が変わる可能性があるため、単に位置を渡さないでください。ポジション 2 を に渡すシナリオを想像してみてくださいActivity2。ただし、Activity2がアップしている間Activity1にデータがリロードされ、ポジション 2 が別のアイテムになりました。

position = posまた、呼び出し元のアクティビティのインスタンス メンバー (つまり、コード内の行) には依存しません。Activity1別のアクティビティが直前のフォアグラウンド アクティビティである間に、あなたが殺される可能性があります。そのシナリオでは、結果が に返されたときに再作成されActivity1ますが、Activity1 の新しいインスタンスになるため、インスタンス メンバーpositionには以前に設定したデータがありません。

于 2016-06-09T14:55:58.153 に答える