A1とA2の2つのアクティビティがあります。シーケンスはA1->A2です。A1からA1でfinish()を呼び出さずにA2を開始します。A2で戻るボタンを押した後、A1で機能をトリガーしたいと思います。ただし、A1でonResume()を使用すると、アクティビティA1の開始中でも関数がトリガーされるため、避けたいと思います。A2の「戻る」プレス中にのみ呼び出す必要があります。
質問する
659 次
4 に答える
4
さて、A2を開始してstartActivityForResult
から
A1実装
@Override
public void onActivityResult(final int requestCode, int resultCode, final Intent data) {
// your code here
}
A2では、onBackPressetをオーバーライドして、アクティビティを終了する前に結果を設定します。それでおしまい。
于 2012-04-17T10:04:36.013 に答える
1
これがもう1つのアプローチです(1つはDimitarによるものです)。
public class A extends Activity {
public static boolean isCalledFromB = false;
public void onCreate(Bundle instance) {
isCalledFromB = false;
}
public void onResume()
{
if(isCalledFromB)
dosomething();
}
public void dosomething() {
}
}
public class B extends Activity {
..............
public boolean onKeyDown(int keycode, KeyEvent event) {
if (keycode == KeyEvent.KEYCODE_BACK) {
A.isCalledFromB=true;
finish();
}
return true;
}
}
于 2012-04-17T10:48:06.713 に答える
-1
onBackPressed()
次に、A2アクティビティ内のメソッドをオーバーライドします。
参考:Android 2.xで動作します。それ以外の場合は、Android 1.xでonKeyDown()を使用できます。
2番目の方法:
を使用して、アクティビティA1内でA2アクティビティを開始しstartActivityForResult()
ます。したがって、戻るキーを押すとonActivityResult()
、A1アクティビティ内にリダイレクトされます。したがって、onActivityResult()内に、そのコードを記述できます。
于 2012-04-17T10:02:33.147 に答える
-1
onResume
初回か再起動かに関係なく、常に呼び出されます。オーバーライドすることで同じことを達成できますonRestart()
編集1:
他のユーザーの提案に従って、代わりにstartActivityForResultを使用してください。
于 2012-04-17T10:05:20.243 に答える