2016-11-09 12 views
0

Привет, ребята, я хочу создать меню с тремя точками на уровне фрагмента, условие: я хочу показать это меню всего на 1 фрагмент, а не на всех, и если я сделаю их в своей основной деятельности , Тогда я не могу скрыть их, поэтому мне нужно сделать их на уровне фрагмента. так далеко я попробовал этот код на мой фрагментРеализуйте 3-х точечное меню на фрагмент

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getActivity().getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // toggle nav drawer on selecting action bar app icon/title 
    if (mDrawerToggle.onOptionsItemSelected(item)) { 
     return true; 
    } 
    switch (item.getItemId()) { 
     case R.id.sync: 
      Toast.makeText(this, "Sync data...", Toast.LENGTH_SHORT).show(); 
      return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

Но его говоря, что метод «onCreateOptionsMenu» не отменяет от своего суперкласса.

Похоже, я пропустил что-то очень основное, не знаю, что это.

Благодаря

+0

какой метод вы не можете переопределить? – Real73

+0

onCreateOptionsMenu –

ответ

0

Попробуйте как этот

menu_filter.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" > 


    <item 
     android:id="@+id/action_filter" 
     android:title="@string/filter" 
     android:orderInCategory="10" 
     android:icon="@drawable/filter" 
     app:showAsAction="ifRoom" /> 


</menu> 

OnCreate Метод фрагмента

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setHasOptionsMenu(true); 
    } 

onCreateOptionsMenu

@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     inflater.inflate(R.menu.menu_filter.xml, menu); // Use filter.xml from step 1 
    } 

onOptionsItemSelected

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 
     if(id == R.id.action_filter){ 
      //Do whatever you want to do 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

Я надеюсь, что это может помочь вам!

+0

Где я должен надеть onCreateOptionsMenu метод на мой основной вид деятельности или на мой фрагмент, где я хочу 3 точки? –

+0

of the course в вашей основной деятельности – Real73

+0

К этому коду я могу показать меню из 3 точек, нет сомнений, но поскольку мы создаем его при манективности, чтобы мы могли скрыть его от другого фрагмента, по этому коду он появляется на всех фрагментах, и это не то, что я хочу –

0

Поместите ImageButton на макет фрагмента с возможностью «3 точки». Затем используйте PopupMenu, чтобы отобразить меню при щелчке ImageButton. Я надеюсь, что следующий ответ дается Shylendra поможет вам: https://stackoverflow.com/a/21329225/7010102

0

Удалить override аннотации, потому что это не позволяет сделать so.Or попробовать использовать другой ресурс меню XML, чтобы преодолеть это problem.Say main_menu для вашего MainAcitivty и main_frag1 для вашего Fragment.

0
// Todo Three Dots Code..... 
    @Override 
    public void onPrepareOptionsMenu(Menu menu) { 

    } 


    @Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     super.onCreateOptionsMenu(menu, inflater); 
     menu.clear(); 
     inflater.inflate(R.menu.minu_filter, menu); 
     menu.findItem(R.id.action_enter_manually).setVisible(true); 
     menu.findItem(R.id.action_validation_report).setVisible(false); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 
     if(id == R.id.action_enter_manually){ 
      Log.e("keshav","Enter Manually"); 
      Intent i=new Intent(getActivity(), EnterManually.class); 
      startActivity(i); 
      //Do whatever you want to do 
      return true; 
     } 
     if(id == R.id.action_validation_report){ 
      Log.e("keshav","Enter Manually 7128"); 
      Intent i=new Intent(getActivity(), DateWiseReportActivity.class); 
      startActivity(i); 

      //Do whatever you want to do 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

---------------------------------------------------------------- 
         menu_filter.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"> 

    <item 
     android:id="@+id/action_enter_manually" 
     android:icon="@mipmap/enter_manualy_48" 
     android:orderInCategory="10" 
     android:title="Enter Manually" 
     app:showAsAction="collapseActionView" /> 

    <item 
     android:id="@+id/action_validation_report" 
     android:icon="@drawable/done" 
     android:orderInCategory="10" 
     android:title="Validation Report" 
     app:showAsAction="collapseActionView" /> 


</menu> 

 Смежные вопросы

  • Нет связанных вопросов^_^