考虑我正在为项目“A”使用五个屏幕页面。每个页面都在其他页面之间依次切换,我需要在单击页面中的“退出”按钮时关闭所有页面五个,也就是最后一个。
我已经使用了下面的代码,但问题是只有最后一页越来越接近其他页面。
在下面找到我的代码
Button extbtn = (Button)findViewById(R.id.but_Exit);
extbtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
setResult(RESULT_OK, intent);
finish();
} });
感谢您的宝贵时间!
最佳答案
让所有五个 Activity 都扩展一个 BaseActivity,它在 onCreate 注册一个 BroadcastReceiver
(并在 onDestroy 取消注册)。
单击 extbtn
时,向所有这些 BaseActivities 发送广播以关闭它们自己
例如,在您的 BaseActivity 中添加:
public static final String ACTION_KILL_COMMAND = "ACTION_KILL_COMMAND";
public static final String ACTION_KILL_DATATYPE = "content://ACTION_KILL_DATATYPE";
private KillReceiver mKillReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
...
mKillReceiver = new KillReceiver();
registerReceiver(mKillReceiver, IntentFilter.create(ACTION_KILL_COMMAND, ACTION_KILL_DATATYPE));
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(mKillReceiver);
}
private final class KillReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
finish();
}
}
在 extbtn 的 onClick 调用中:
extbtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// send a broadcast that will finish activities at the bottom of the stack
Intent killIntent = new Intent(BaseActivity.ACTION_KILL_COMMAND);
killIntent.setType(BaseActivity.ACTION_KILL_DATATYPE);
sendBroadcast(killIntent);
Intent intent = new Intent();
setResult(RESULT_OK, intent);
finish();
}
});
关于android - android eclipse中的多页面切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10880259/