0

開始画面とともに約 5 ページのアプリケーションを作成していますがfinish()onPause()メソッドに記述すると、ユーザーが次のページに移動するとページが破棄されることを認識しています。

私の要件は、アプリケーションの 3 ページ目に到達するまで AppPage 1 を破棄したくないというものですが、ユーザーがアプリケーションの 4 ページ目に移動するとすぐに、すべての 1,2,3 を破棄したいと考えています。アプリケーションの AppPages に戻るボタンをクリックしてもアクセスできず、アプリケーションの開始時に強制終了していないアプリケーションの開始画面に直接到達します。

したがって、ユーザーが 3 ページ目の [次のページに移動] ボタンをクリックしたときに、アプリケーションの 1,2,3 ページを強制終了することは可能ですか?

ありがとう

==== 編集 =====

開始画面 -> AppPage1 -> AppPage2 --> AppPage3 --> AppPage4 (ここで AppPage1、2、3 を終了し、戻るをクリックするとユーザーが開始画面に到達するようにします) --> Appage 5 (AppPage4 を終了)

====編集2 =====

AppPage1.java

public class AppPage1 extends Activity{

Button goToAppPage2;
BroadcastReceiver logout;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.apppage1);

    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction("com.closing.application.pages.AppPage1");

    logout = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
          finish();
        }
    };

    registerReceiver (logout, intentFilter);

    goToAppPage2 = (Button) findViewById(R.id.goToAppPage2);
    goToAppPage2.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent i1 = new Intent(AppPage1.this, AppPage2.class);
            startActivity(i1);
        }
    });  

}

@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    unregisterReceiver(logout);
}

}

AppPage2.java

public class AppPage2 extends Activity{

Button goToAppPage3;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.apppage2);

    Intent intent = new Intent("kill");
    intent.setType("spartan!!!");
    sendBroadcast(new Intent(this, AppPage1.class));



    goToAppPage3 = (Button) findViewById(R.id.goToAppPage3);
    goToAppPage3.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent i1 = new Intent(AppPage2.this, AppPage3.class);
            startActivity(i1);

        }
    });    
} 
}
4

4 に答える 4

2

これは、ブロードキャスト メッセージを介して実現できます。アクティビティがログインするユーザーに依存する場合に自分で使用しているため、ログアウトすると、それらのアクティビティはすべて終了し、ログイン画面のみが残るはずです。

まず、終了するアクティビティにブロードキャストを登録します。アクティビティの数が多い場合は、他のアクティビティが拡張できる場所から親アクティビティを作成できるため、このコードを何度も繰り返す必要はありません。

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.example.ACTION_LOGOUT");
BroadcastReceiver logout = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
      finish();
    }
};
registerReceiver (logout, intentFilter);

onDestroy() で登録解除することを忘れないでください。

unregisterReceiver(logout);

前のアクティビティを終了したいときにブロードキャストを送信します。

Intent broadcastIntent = new Intent();
broadcastIntent.setAction("com.example.ACTION_LOGOUT");
sendBroadcast(broadcastIntent);
于 2012-06-09T13:49:16.443 に答える
0

これを試して、

アクティビティ 1 からアクティビティ 2 を呼び出すために使用startActivityForResult(intent,0)し、アクティビティ 1 に次のコードを記述します。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
        case 0:
            if (resultCode == RESULT_OK) {
                finish();
            }
        }
    }

アクティビティ 2 で同様に行い、 を使用してアクティビティ 3 を呼び出しますstartActivityForResult

最後にアクティビティ 3 を形成してから、アクティビティ 4 を呼び出す必要がありますfinish()onActivityResultActivity 3 で finish() を呼び出すと、前の Activity で記述したコールバック メソッドが実行され、それ自体が終了します。

于 2012-06-09T13:39:42.193 に答える
0
YourActivityName.this.finish();
                 ^^^^

これを試してください。これにより、ユーザーはそのアクティビティに戻ることができなくなります

于 2012-06-09T13:39:52.033 に答える
0

4 番目のページで onBackPressed() メソッドをオーバーライドして、ユーザーが戻るキーを押すと、メイン ページまたは必要なものに強制的に移動することができます。

 public void onBackPressed() {
        //code here, like calling back the main page of your app
    }

私はその質問を見つけました.3番目の答えがあなたを助けることができるかもしれません:

アプリケーションのすべてのアクティビティを終了するにはどうすればよいですか?

于 2012-06-09T14:12:42.563 に答える