Androidアプリで簡単なことをしたいのですが。前のアクティビティに戻るにはどうすればよいですか。
前のアクティビティに戻るにはどのコードが必要ですか
Androidアプリで簡単なことをしたいのですが。前のアクティビティに戻るにはどうすればよいですか。
前のアクティビティに戻るにはどのコードが必要ですか
回答:
Androidアクティビティはアクティビティスタックに格納されます。前のアクティビティに戻るには、2つの意味があります。
startActivityForResultを使用して、別のアクティビティから新しいアクティビティを開きました。その場合は、コードからfinishActivity()関数を呼び出すだけで、前のアクティビティに戻ることができます。
アクティビティスタックを追跡します。インテントで新しいアクティビティを開始するたびに、FLAG_ACTIVITY_REORDER_TO_FRONT
またはのようなインテントフラグを指定できますFLAG_ACTIVITY_PREVIOUS_IS_TOP
。これを使用して、アプリケーションのアクティビティ間をシャッフルできます。しかし、それらをあまり使用していません。こちらのフラグをご覧ください:http : //developer.android.com/reference/android/content/Intent.html
コメントで述べたように、アクティビティがで開かれている場合、でstartActivity()
閉じることができfinish()
ます。「上へ」ボタンを使用したい場合は、コメントに記載されているのとは異なりonOptionsSelected(MenuItem item)
、アイテムIDをチェックすることでそのメソッドをキャッチできます。android.R.id.home
R.id.home
お試しくださいActivity#finish()
。これは多かれ少なかれ、デフォルトで戻るボタンです。
this.finish();
#
指標であるfinish()
アクティビティクラスの非静的メソッドです。これは有効なJavaではありませんが、メソッドの使用方法を説明するのに役立ちます。
.
、つまり:Activity.someStaticMethod()
これだけ
super.onBackPressed();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
これにより、スタックを保持し、その後のすべてのアクティビティをスタックからクリアする前のアクティビティに移動します。
たとえば、スタックがA-> B-> C-> Dで、このフラグでBを開始すると、スタックはA-> Bになります。
戻るボタンの動作を制御したいですか?2つのメソッドのいずれかを使用して、(特定のアクティビティに移動するために)戻るボタンをオーバーライドできます。
Android 1.6以下の場合:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// do something on back.
return true;
}
return super.onKeyDown(keyCode, event);
}
または、Android 2.0以上のみをサポートしている場合:
@Override
public void onBackPressed() {
// do something on back.
return;
}
詳細:http : //android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html
これらのメソッドを呼び出すだけで、現在のアクティビティを終了するか、onBackPressedで戻ることができます
finish();
または
onBackPressed();
前のアクティビティに行きたいだけに行きたい場合
finish();
または
onBackPressed();
2番目のアクティビティ以下に移動する場合は、以下を使用します。
intent = new Intent(MyFourthActivity.this , MySecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//Bundle is optional
Bundle bundle = new Bundle();
bundle.putString("MyValue1", val1);
intent.putExtras(bundle);
//end Bundle
startActivity(intent);
戻るボタンを押す必要があるため、これを試してください
finish();
onBackPressed();
明示的に呼び出すことができます onBackPressed
最も簡単な方法はされて
参照してください前のアクティビティに移動バックを詳細については、
インテントを使用して2番目のアクティビティを開始します(使用startActivity
またはstartActivityForResult
します、要件に応じて)。ユーザーが戻るボタンを押すと、上部の現在のアクティビティが閉じられ、前のアクティビティが表示されます。
ここで、2つのアクティビティがあるとします。1つは言語、国などのユーザーの設定を選択するアクティビティで、それを選択した後、ユーザーは[次へ]ボタンをクリックしてログインフォーム(たとえば)に移動します。ログインが失敗した場合、ユーザーはログインアクティビティに参加します。ログインが成功した場合はどうなりますか?
ログインが成功した場合は、別のアクティビティを開始する必要があります。これは、3番目のアクティビティが開始され、それでも2つのアクティビティが実行されていることを意味します。この場合、を使用するとよいでしょうstartActivityForResult
。ログインが成功したら、最初のアクティビティにOKデータを送り、ログインアクティビティを閉じます。データを受信したら、3番目のアクティビティを開始し、finishを使用して最初のアクティビティを閉じます。
以前のアクティビティに戻るケースはほとんどありません。
ケース1:結果を以前のアクティビティに戻す場合は、 ActivityA.java
Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
startActivityForResult(intent,2);
FBHelperActivity.java
Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);
finish();
ケース2: ActivityA-> FBHelperActivity ----> ActivityA
ActivityA.java
Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
startActivity(intent);
FBHelperActivity.java
after getting of result call finish();
By this way your second activity will finish and because
you did not call finish() in your first activity then
automatic first activity is in back ground, will visible.
言及されたすべての回答に加えて、それらはこれを行う別の方法です。クラスAとクラスBの2つのクラスがあるとします。
クラスAは、チェックボックス選択などのいくつかのアクティビティを行い、データとクラスBへの意図を出力しました。クラスB、クラスAに複数の値を渡し、クラスAの以前の状態を維持したい場合、使用できます。これを実証する方法またはソースコードをダウンロード
または
http://developer.android.com/reference/android/content/Intent.html
これを試してみてください、最初のアクティビティ
Intent mainIntent = new Intent(Activity1.this, Activity2.class);
this.startActivity(mainIntent);
2番目のアクティビティで
@Override
public void onBackPressed() {
this.finish();
}