【发布时间】:2012-06-13 06:12:41
【问题描述】:
我正在制作一个大约有 5 个页面和一个起始屏幕的应用程序,我知道如果我在 onPause() 方法中编写 finish(),一旦用户转到下一页,页面就会被销毁。
我的要求是我不希望 AppPage 1 被销毁,直到我到达应用程序的第 3 页,但是一旦用户进入应用程序的第 4 页,我想销毁所有 1,我的应用程序的 2,3 个 AppPages,以便通过单击后退按钮无法访问它们并直接到达我的应用程序的启动屏幕,我不会在应用程序启动时杀死它们。
所以我想问一下,当用户单击第 3 页的转到下一页按钮时,是否有可能杀死我的应用程序的 1、2、3 页。
谢谢
==== 编辑 =====
Starting Screen -> AppPage1 -> AppPage2 --> AppPage3 --> AppPage4 (Kill AppPage1,2,3 here, so if back is clicked user到达starting screen) --> 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);
}
});
}
}
【问题讨论】:
-
您的实际要求是,当您处于活动堆栈中的第四个活动时,您不希望您的应用程序在单击返回按钮时支持返回活动 3 到活动 2 到活动 1。??
-
不,我希望这些页面被关闭,完全被杀死....就像在相应页面上使用
AppPage3.finish()、AppPage2.finish()、Appage1.finish()会杀死这些页面,但我希望它们在我到达 AppPage4 后被杀在这里 -
AppPage2 出现错误。当您发送广播消息时,请完全使用我给您的代码。您只需将“com.example.ACTION_LOGOUT”替换为“com.closing.application.pages.AppPage1”。动作名称应该是same.class。如果您不了解这种行为,请阅读 Android 中的广播消息。我希望它有帮助! :)
-
哦,伙计.....我在关注的两个页面之间感到困惑:-P ...我的错...非常感谢您的快速回复和帮助我:-)跨度>