2015-10-12 3 views
0

Я знаю, что это не новый вопрос, который я задал, но я пробовал все решения. Non из них работал для меня: Я использую ActionBarActivity. Я называю несколько фрагментов через основную деятельность.Действия Android onCreateOptionsMenu не работают во фрагментах

код MainActivity Меню

 @Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
return super.onOptionsItemSelected(item); 
} 

Я создал новый класс меню и помещен значок. В фрагменте oncreate i размещен setHasOptionsMenu(true);

Также размещен menu.clear();

@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)  { 
    super.onCreateOptionsMenu(menu, inflater); 
    menu.clear(); 
    inflater.inflate(R.menu.menu_manage_products, menu); 

} 

Для выполнения действия я использовал следующий код:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    Log.d("onOptionsItemSelected","yes"); 
    switch (item.getItemId()) { 
     case R.id.exit: 
      System.exit(1); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

меню/menu_manage_products.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" tools:context="b2go.moshop.devblaze.moshop.view.Products.Products_Home"> 

<item android:id="@+id/action" 
    android:icon="@drawable/exit" 
    android:title="@string/exit" 
    android:orderInCategory="100" 
    app:showAsAction="always"/> 

также разместил сообщение в журнал, но журнал не показывал. Я не знаю, почему onOptionItemSelected не выполняет действия в фрагментах.

Любая помощь будет оценена по достоинству.

+0

Вызов setHasOptionsMenu (истина) на фрагменте каждый раз, когда вы делаете F . –

+0

Я тоже пробовал, но не работает –

+0

Вы делаете операции с фрагментами или используете ViewPager? В любом случае вызовите его в Activity на ссылку текущего фрагмента, когда он изменится. –

ответ

1

Ну вы не должны использовать System.exit (1)

Вместо Используйте отделку() или

На самом деле это было бы хорошая идея, чтобы позвонить OnDestroy так и может освободить весь объект, а затем называют отделка Метод

для фрагмента

fragmentTransaction.remove (yourfragment) .commit()