0

私のメインアクティビティでは、onResumeメソッドをオーバーライドして、以前に開いたアクティビティに応じて動作が異なるようにします。例:ユーザーが(addNewItemアクティビティで)listViewの新しいアイテムを作成した場合、newItemを表示するためにデータベースをリロードする必要があります。ただし、メインアクティビティに表示されているオブジェクトで何も変更されないアクティビティに切り替えただけの場合は、データベースを再ロードしたり、GUIを再構築したりしないでください。そのため、以前にどのアクティビティが「開かれた」かを知る必要があります。

私の問題をご理解いただければ幸いです。

4

3 に答える 3

0

アクティビティを呼び出すときに、インテントで何かを送信できます。

Intent myIntent = new Intent(Activity1.this,Activity2.class);
Bundle myData = new Bundle();
myData.putString("previousActivity", "Activity1");
myIntent.putExtras(myData);
startActivity(myIntent);

次に、新しいアクティビティでこれにアクセスし、結果を比較します。

Intent myLocalIntent = getIntent();
Bundle myBundle = myLocalIntent.getExtras();
String str1 = myBundle.getString("previousActivity");
if string.equals("Activity1"){
   // do code changes for activity 1 here
}

これを行うにはもう少し洗練された方法があります(つまり、特定のアクティビティに対応するint変数を渡す)が、これが最も基本的な方法です。

于 2013-02-01T17:05:25.880 に答える
0

汚い方法は、アプリケーションクラスを拡張し、アプリ内のすべてのアクティビティのすべてのonResume/OnPauseメソッドで設定する属性lastActivityを設定することです。このように、履歴書のメインアクティビティが呼び出されたら、このlastActivityフィールドを読んで、どこから来たのかを確認してください。しかし、私はそれを行うための汚い方法だと思います:D

于 2013-02-01T17:07:02.073 に答える
0

それを行う正しい方法は、すべてのアクティビティをで開始することstartActivityForResult(intent, resultCode)です。

アクティビティが終了すると、setResult(int)を呼び出して、データを親に戻すことができます。

開発者向けリソースへのリンク

于 2013-02-01T18:17:54.600 に答える