关闭应用程序中的先前页面

时间:2012-06-09 13:33:34

标签: android applicationpage

我正在创建一个大约有5页的应用程序以及一个起始屏幕,我知道如果我在finish()方法中编写onPause(),一旦用户进入该页面,该页面将被销毁下一页。

我的要求是,在我到达应用程序的第3页之前,我不希望销毁AppPage 1,但是一旦用户转到应用程序的第4页,我想要销毁所有1, 2,3我的应用程序的应用程序,以便通过单击后退按钮无法访问它们,直接到达我的应用程序的起始屏幕,我没有在应用程序启动时查杀。

所以我想问一下,当用户点击第3页的转到下一页按钮时,是否有可能杀死我的应用程序的1,2,3页。

由于

====编辑=====

开始屏幕 - > AppPage1 - > AppPage2 - > AppPage3 - > AppPage4(在此处杀死AppPage1,2,3,如果单击后退,则用户到达开始时间) - > Appage 5(Kill 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 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

试试这个,

使用startActivityForResult(intent,0)从活动1中调用活动2,并在活动1中编写以下代码

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

在活动2中执行类似操作,并使用startActivityForResult调用活动3。

最后在调用Activity 4之前形成Activity 3,你应该只调用finish()。如果在Activity 3中调用finish(),则前一个Activity中编写的回调方法onActivityResult将被执行,它将自行完成。

答案 2 :(得分:0)

YourActivityName.this.finish();
                 ^^^^

尝试此操作,这将不允许用户返回该活动

答案 3 :(得分:0)

你可以在第4页覆盖onBackPressed()方法,这样当用户按下后退键时,他将被强制进入主页面,或者你需要的任何内容。

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

潜伏着我发现了这个问题,也许第三个答案可以帮到你:

How to close all the activities of my application?