我有一个自定义的操作栏,我想在主要活动上添加导航抽屉图标,通过点击它将打开/关闭抽屉和其他活动我想要一个后退箭头,点击它我回到父活动。 我已经为抽屉图标做了这个,它可以工作,
toolbar.setNavigationIcon(R.drawable.ic_menu_black_24dp);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
对于后退箭头我试过这个
setDisplayHomeAsUpEnabled(true);
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
this.finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
但是一次只能运行一件事,两者如何运作?
答案 0 :(得分:0)
在其他活动中(您需要后退箭头),您应该在parentActivityName
文件中定义AndroidManifest.xml
,以定义按下后退箭头时应导航的活动。
<activity
android:name=".activities.ArticleDetailActivity"
android:parentActivityName=".activities.ArticlesActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.activities.ArticlesActivity" />
</activity>
在此活动 java代码中,您应该在onCreate
回调方法中编写以下代码。
ActionBar actionBar = getSupportActionBar();
if(actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
在活动的onOptionsItemSelected
回调方法中,您还需要以下代码才能返回上一个活动。
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}