У меня есть просто Activity, который является дочерним элементом класса ActionBarActivity. В методе, который я установил, OnCreate поддерживает панель инструментов. Для этого я переопределяю OnOptionsItemSelected, поэтому при нажатии кнопки "Назад" выполнялось какое-то действие
К сожалению, до тех пор, пока панель инструментов отображается правильно, это уже не реакция на обратное нажатие клавиш. Я бы добавил, что в других активностях (которые используют фрагменты) все работает корректно.
Помогите пожалуйста мне
это уже не реакция на обратное нажатие клавиш. Клавиши - аппаратная кнопка Назад что ли? XTL 23.11.2015
public override bool OnOptionsItemSelected(IMenuItem item)
{
//Back button pressed -> toggle event
if (item.ItemId == Android.Resource.Id.Home)
this.OnBackPressed();
return base.OnOptionsItemSelected(item);
}
Ответ 2 · рейтинг 9 · Yksh
Попробуйте что-то вроде этого:
Просто добавьте эти строки в свой метод 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;
}
Ответ 3 · рейтинг 4 · Justin Yang
попробуйте this.toolbar.setNavigationOnClickListener и заставьте его обрабатывать onBackPressed или popBackstack в соответствии с вашими потребностями.
Ответ 4 · рейтинг 4 · XTL
Попробуйте сделать это:
[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();
}
Ответ 5 · рейтинг 1 · Jake
Проблема оказалась действительно странной. Макет, который использовал панель действий, имел RelativeLayout. После изменения атрибута LinearLayout android:gravity="vertical" все работает корректно.
Спасибо всем за помощь
Ответ 6 · mirjafarabedi
Я предлагаю вам использовать этот фрагмент кода, чтобы использовать пользовательскую кнопку "Назад" на панели инструментов:
Первый шаг: добавьте кнопку возврата значка в папку с возможностью рисования.
Второй шаг: добавьте панель инструментов в свой AppBarLayout следующим образом: