4

私のアプリケーションでは、3 つのアクティビティがあります。最初の 1 つ - アクティビティ #2 を開始するメイン。#2 から #3 を開始し、同時に #2 を終了します。#3 を終えると、自動的に #1 に戻ります。質問: 3 から 1 に戻ったときにコードを追加/実行するにはどうすればよいですか?

意味があるかどうかはわかりません。しかし、私がやりたいことは、#3 を終了して #1 に戻るときに、ファイル xyz が存在するかどうかを確認し、それに基づいてアクティビティ #1 の UI を変更することです。

#1のOnResumeは実行されません。(おそらく、システムはこの最初のアクティビティの onpause を実行しません)

アクティビティ #1 と 2 しかない場合は、startActivityForResult を使用できます。しかし、2 つのアクティビティでは必要なことができません...

4

5 に答える 5

9

以下の例を参照してください。

あなたのアクティビティ#1コードはこのようなものです

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

}

@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();

          //Do your code here
}
}

あなたのアクティビティ#3コードはこのようなものです

public class Activity3 extends Activity{



@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity3); 
}
@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();
    finish();
}


}
于 2012-11-05T08:59:59.957 に答える
0

考慮すべき複数の側面があります。

  1. #1 onPause()/onResume() が呼び出されないのはなぜですか? あなたはこれについて確信を持っていますか?それは非常にありそうもありません。Android のドキュメントには、onPause()について次のように記載されています。

    (...) アクティビティ B がアクティビティ A の前に起動されると、このコールバックが A で呼び出されます。B は、A の onPause() が戻るまで作成されません。(...)

  2. 複数のアクティビティの代わりにフラグメントを使用することを検討する必要があるように思えます。

  3. クイックフィックスは、#3 を終了するときに #1 の startActivity を呼び出すことです。#1 の起動モードが singleTop に設定されて いることだけを確認する必要があります。
于 2012-11-04T16:42:35.843 に答える
0

アクティビティのメソッドを作成する 1:

public void changeViewsMethod(){
    textView.setText("demo");
}

今あなたのActivty 2でこれを行います:

@Override
public void onBackPressed() {
    super.onBackPressed();
    ((YOU_ACTIVITY1) getApplicationContext()).changeViewsMethod();
}

それがうまくいくことを願っています。

于 2019-01-24T15:59:44.433 に答える
0

アクティビティ 1 からアクティビティ 2 を開始しないでください。代わりに、アクティビティ #3 を開始し、インテントでフラグを渡して、アクティビティ #3 にアクティビティ #2 を開始するように指示します。アクティビティ #3 がstartActivity内部から呼び出された場合onCreate、画面のちらつきはありません。そうすれば、アクティビティ #1 はstartActivityForResultアクティビティ #3 の結果を使用して取得できます。

少し面倒ですが、うまく機能します。

于 2012-11-04T15:54:51.140 に答える
-1

アクティビティ #3 の OnPause に設定変数を記述できます (Activity3Finished=true のようなもの)。アクティビティ #3 が終了した場合、すべてのアクティビティをチェックインできます。

#3 の OnCreate で Variable をリセットすることを忘れないでください。

于 2012-11-04T15:51:37.473 に答える