Raq*_*nak 12 android android-fragments android-actionbar-compat
我正在使用ActionBarCompat.当我加载子片段时,我希望主页按钮作为向上按钮.所以我从子片段调用了这个:
((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)
但仍然没有将主页按钮显示为向上按钮.我还增加了逻辑的ID android.R.id.home中onOptionsItemSelected,但它仍然无法正常工作.我有什么想法可以完成它吗?
在这漫长的几天里,我一直在努力解决这个问题,而这正是我发现的工作方式.我希望有一个更好的解决方案,但这确实可以完成工作:
在我的主要活动(启动片段的那个)中,创建以下公共函数,该函数将由"子"片段调用:
// The method is in MainActivity.java
public void resetActionBar(boolean childAction, int drawerMode)
{
if (childAction) {
// [Undocumented?] trick to get up button icon to show
drawerToggle.setDrawerIndicatorEnabled(false);
mActionBar.setDisplayHomeAsUpEnabled(true);
} else {
drawerToggle.setDrawerIndicatorEnabled(true);
}
drawerLayout.setDrawerLockMode(drawerMode);
}
Run Code Online (Sandbox Code Playgroud)
然后,从您想要显示"向上"按钮的片段中,只需按如下方式调用该方法(根据需要调整类名):
// This method in in SomeFragment.java
((MainActivity)getActivity()).resetActionBar(true,
DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
Run Code Online (Sandbox Code Playgroud)
总结一下,这里是如何从片段启用按钮:
希望这会有所帮助,我希望将来这会变得更容易......
Lok*_*oid -2
试试这个,也不要忘记在清单中提及父活动和活动的元数据
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
Intent intent = NavUtils.getParentActivityIntent(this);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
NavUtils.navigateUpTo(this, intent);
// NavUtils.navigateUpFromSameTask(this);
// finish();
return true;
} else {
return super.onOptionsItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9165 次 |
| 最近记录: |