0

有關於該主題的許多問題,但我不明白我的問題。我在我的MainActivityActionBarActivity)中聲明瞭一個菜單。現在我想與MenuItem一起使用onOptionsItemSelectedFragment類。這裏是我的MainActivity方法Android onOptionsItemSelected方法的片段不叫

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // toggle nav drawer on selecting action bar app icon/title 
    if (mDrawerToggle.onOptionsItemSelected(item)) { 
     return true; 
    } 
    // Handle action bar actions click 
    switch (item.getItemId()) { 
     case R.id.add_note: 
      createNewNote(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

private void createNewNote() { 
    Intent addIntent = new Intent(MainActivity.this, AddNote.class); 
    startActivity(addIntent); 
} 

而且Fragment方法

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

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.add_note: 
      Toast.makeText(getActivity(), "Entered into fragment", Toast.LENGTH_LONG).show(); 
      createNewNote(); 
      return true; 
     default: 
      break; 
    } 
    return super.onOptionsItemSelected(item); 
} 

private void createNewNote() { 

    Intent addIntent = new Intent(getActivity(), AddNote.class); 
    startActivity(addIntent); 
} 

在這裏,在MainActivity onOptionsItemSelected被調用,即使在Fragment但不會在Fragment,因爲我沒有看到FragmentToast。我認爲我的代碼中錯過了一些東西。提前致謝。

回答

0

onOptionsItemSelected()在交換機內部的活動叫createNewNote()而不是返回true回報super.onOptionsItemSelected(item)

0

你必須在onCreate裏面調用setHasOptionsMenu()才能使菜單相關的方法工作。

+0

看到我的'Fragment'代碼之後,我接着說: setHasOptionsMenu(true)'在片段類的'onCreate'內 – andDev 2015-02-05 15:24:06

0

onCreateOptionsMenu()方法不膨脹的菜單文件:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 
}