【发布时间】:2013-09-06 11:50:57
【问题描述】:
我使用ActionbarSherlock 并希望启用主页按钮...
因此,我在基本活动中调用 setHomeButtonEnabled(true)。
public class BaseFragmentActivity extends SherlockFragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.Theme_Sherlock);
super.onCreate(savedInstanceState);
getSupportActionBar().setHomeButtonEnabled(true); // Here
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home: {
Intent intent = new Intent(this, HomeActivity.class);
// startActivity(intent);
// startActivityIfNeeded(intent, 0);
return true;
}
default:
return super.onOptionsItemSelected(item);
}
}
}
当我使用startActivity(intent) 或startActivityIfNeeded(intent, 0) 时,HomeActivity 每次都会重新创建(活动会呈现地图并重新创建它很烦人)。
- 我不想call
finish(),因为它只会让我在应用程序层次结构中退一步。相反,我总是想回到HomeActivity。 - 此外,如果可以在
AndroidManifest.xml中配置该行为会更好,就像在 ActionBar and setDisplayHomeAsUpEnabled() 中描述的那样。 - 当我返回
HomeActivity时,清除后台堆栈可能也是常识。您对此有何看法?
【问题讨论】:
-
将你的home Activity设为singleInstance,并且用户startActivity(intent),它将把你旧的home Activity实例放到前面
标签: android android-actionbar actionbarsherlock back-stack android-homebutton