活动尚未恢复到以前的活动,而在动作条后退导航按钮点击
问题描述:
我的活动正在扩大ActionBarActivity和我们设定的onCreate()后退导航按钮:活动尚未恢复到以前的活动,而在动作条后退导航按钮点击
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(getSupportActionBar()!=null)
{
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
和背压,完成这个活动是在给定的重写方法,但它并没有移动到以前的活动
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
答
你的id是错的。所以请将您的ID'R.id.home'更改为'android.R.id.home:'。
switch (item.getItemId())
{
case android.R.id.home:
finish();
return true;
}
试试这个。
答
请参考下面的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_next);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// app icon in action bar clicked; goto parent activity.
this.finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
答
你需要调用onBackPressed功能
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case android.R.id.home:
onBackPressed();
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
答
你需要重写onBackPressed方法对动作条处理后退按钮(home键)。
@Override
public void onBackPressed() {
super.onBackPressed();
// your code here
// finish();
}
答
你必须设置工具栏之前获得。
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar mToolBar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(mToolBar);
getSupportActionBar().setTitle("Some titile);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mToolBar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/**
change code here*/
}
});
}
答
负责提供适当的向上导航,你就必须:
定义清单中的父活动。
<activity
android:name=".MainActivity"
android:parentActivityName=".HomeActivity"
....>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".HomeActivity" />
</activity>
而且在MainActivity:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
应该有MainActivity的XML工具栏。然后重写onOptionsItemSelected。
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case android.R.id.home:
finish();
return true;
}
}
而不是使用结束(),你应该考虑使用NavUtils类的NavUtils.navigateUpFromSameTask(this)
或其他这样的方法。
使用像singleTop这样的launchModes来防止重新加载父活动。
有关正确的向上导航的更多信息可以找到here。