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

本文关键字:按钮 不起作用 工具栏 | 更新日期: 2023-09-27 18:22:05

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

代码如下:

    [Activity (Label = "SimplyActivity", Theme="@style/MyTheme")]           
        public class SimplyActivity : ActionBarActivity
        {
            private Toolbar toolbar;
            // ... OnCreate method
            this.toolbar = FindViewById<Toolbar>(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,并根据您的需要使其处理BackPressed或popBackstack。

尝试这样做:

[Activity (Label = "SimplyActivity", Theme="@style/MyTheme")]           
        public class SimplyActivity : ActionBarActivity
        {
            private Toolbar toolbar;
// ...
// OnCreate method
this.toolbar = FindViewById<Toolbar>(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);
}

这个问题真的很奇怪。使用操作栏的Layout具有RelativeLayout。在更改为LinearLayout属性android:gravity="vertical"后,一切正常。

感谢大家的帮助

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

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

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

<android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">
        <android.support.v7.widget.Toolbar
            android:id="@+id/chart_toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>

第三步:在你的onCreate中查找如下视图:

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和onoptionssitemselected方法:

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