Android で finish() 関数に問題があります。
私は次の動作を取得しようとしています: ユーザーが初めてアプリケーションを起動したときに、ウィザード手順を開始したいと考えています。さまざまなフラグメントで PageViewer を使用しています。ユーザーが最初のページにいるときに戻るボタンを押すと、アプリケーションが閉じます。
ここで私がしたこと:
メイン アクティビティでは、ユーザーがアプリケーションを初めて起動したかどうかを確認します。この場合、新しいアクティビティ(ウィザード)を開始します。
if(firstTime) {
// here activity is the main activity
Intent i = new Intent(activity, Wizard.class);
activity.startActivityForResult(i,0);
}
ウィザード アクティビティ クラスで、onBackPressed メソッドをオーバーライドします。
@Override
public void onBackPressed(){
if(pager.getCurrentItem() == 0) {
setResult(5);
finish();
} else{
// code
}
}
finish() が呼び出されると、Android は親アクティビティ (メイン アクティビティ) の onActivityResult メソッドを呼び出します。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
if(resultCode == 5) {
finish()
}
}
私が期待しているのは、アプリケーションが閉じられることです。私が得たのは、Android が onResume を呼び出し、次に onCreate メソッドを呼び出して、ウィザードを最初から開始することです。次に、この新しいウィザードからもう一度押すと、アプリケーションは期待どおりに閉じます。
助けてくれてありがとう!