工具栏中的后退按钮不起作用

我只有Activity,它是ActionBarActivity类的子代。 在方法中我设置OnCreate支持工具栏。 为此,我重写OnOptionsItemSelected,所以当我按下后退按钮时执行了一些操作

代码如下所示:

[Activity (Label = "SimplyActivity", Theme="@style/MyTheme")] public class SimplyActivity : ActionBarActivity { private Toolbar toolbar; // ... OnCreate method this.toolbar = FindViewById(Resource.Id.toolbar); SetSupportActionBar (this.toolbar); SupportActionBar.SetDisplayHomeAsUpEnabled (true); SupportActionBar.SetHomeButtonEnabled (true); public override bool OnOptionsItemSelected (IMenuItem item) { if (item.TitleFormatted == null) this.OnBackPressed (); return base.OnOptionsItemSelected (item); } 

不幸的是,只要工具栏显示正确,按下按键时就不再有任何反应。 我想在其他活动(使用片段)中添加一切正常。

请帮帮我

它应该像这样工作

 public override bool OnOptionsItemSelected(IMenuItem item) { //Back button pressed -> toggle event if (item.ItemId == Android.Resource.Id.Home) this.OnBackPressed(); return base.OnOptionsItemSelected(item); } 

尝试这样的事情:

只需在OnCreate方法中添加以下行:

  SupportActionBar.SetDisplayHomeAsUpEnabled(true); 

然后覆盖下面给出的OnOptionsItemSelected方法。

 public override bool OnOptionsItemSelected(IMenuItem item) { if (item.ItemId != Android.Resource.Id.Home) return base.OnOptionsItemSelected(item); Finish(); return true; } 

尝试this.toolbar.setNavigationOnClickListener,并根据您的需要使其处理onBackPressed或popBackstack。

尝试这样做:

 [Activity (Label = "SimplyActivity", Theme="@style/MyTheme")] public class SimplyActivity : ActionBarActivity { private Toolbar toolbar; // ... // OnCreate method this.toolbar = FindViewById(Resource.Id.toolbar); SetSupportActionBar (this.toolbar); SupportActionBar.SetDisplayHomeAsUpEnabled (true); SupportActionBar.SetHomeButtonEnabled (true); //dont forget this this.toolbar.SyncState(); this.toolbar += ClickedMenu; public override bool OnOptionsItemSelected (IMenuItem item) { this.OnOptionsItemSelected(item); return base.OnOptionsItemSelected (item); } public void ClickedMenu(object sender,SupportToolbar.MenuItemClickEventArgs e) { switch (e.Item.ItemId) { //your TitleFormatted ID case Resource.Id.action_edit: //do stuff here this.OnBackPressed (); break; } } protected override void OnPostCreate(Bundle savedInstanceState) { base.OnPostCreate(savedInstanceState); this.toolbar.SyncState(); } 
 @Override public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId() == android.R.id.home) { // do something } return super.onOptionsItemSelected(item); } 

事实certificate这个问题真的很奇怪。 使用操作栏的布局具有RelativeLayout。 更改为LinearLayout属性android:gravity =“vertical”后,一切正常。

谢谢大家的帮助

我建议您使用此代码段在工具栏中使用自定义后退按钮:

第一步:将图标后退按钮添加到可绘制文件夹中。

第二步:将工具栏添加到AppBarLayout中,如下所示:

    

第三步:在你的onCreate中find这样的视图:

 Toolbar toolbar = (Toolbar) findViewById(R.id.chart_toolbar); 

第4步:在工具栏中添加支持操作栏:

 setSupportActionBar(toolbar); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } 

第五步:在您的按钮上添加欲望图标:

 toolbar.setNavigationIcon(ContextCompat.getDrawable(getApplicationContext(), R.drawable.ic_chevron_left)); 

第六步:为后退按钮设置一个点击监听器:

 toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { NavUtils.navigateUpFromSameTask(Chart.this); } }); 

最后覆盖oncreateoptionsmenu和onoptionsitemselected方法:

 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.my_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { return true; }