1

考虑我正在为项目“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();
}   });

谢谢你的时间!

4

1 回答 1

1

使所有五个活动都扩展一个 BaseActivity,该 BaseActivityBroadcastReceiver在 onCreate 注册(并在 onDestroy 取消注册)。单击时extbtn,向所有这些 BaseActivity 发送广播以关闭它们自己

例如,在您的 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();
    }
});    
于 2012-06-04T11:18:02.813 回答