我有几个活动从基础活动继承,并带有如下菜单。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Intent myIntent;
switch(item.getItemId()) {
case R.id.home:
myIntent = new Intent(this, HomeActivity.class);
startActivityForResult(myIntent, 0);
return true;
case R.id.map:
myIntent = new Intent(this, GoogleMapsActivity.class);
startActivityForResult(myIntent, 0);
return true;
case R.id.art:
myIntent = new Intent(this, ArtActivity.class);
startActivityForResult(myIntent, 0);
return true;
...
default:
return super.onOptionsItemSelected(item);
}
}
这很有效,但选择菜单项会启动该活动的新实例。如何将pause()和resume()与setResult()结合使用,在给定时间内每个活动只有一个或更少的实例?
为了更加具体,当用户回到之前访问过的活动时,它应该处于与离开它时相同的状态(如标签)。
答案 0 :(得分:0)
您可以通过将活动的launchMode配置为singleTask来实现此目的。但是,正如文档所指出的,这可能会导致用户意外行为。当用户回击时,他们希望被带回到之前的屏幕。如果您使用此模式,请确保彻底测试后退功能。
答案 1 :(得分:0)
将.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP| Intent.FLAG_ACTIVITY_SINGLE_TOP)
用于您的意图,然后通过startActivity