2016-10-05 5 views
1

Я искал весь день через весь подобный вопрос и ответ, здесь, в StackOverflow, но не нашел ни малейшего понятия, почему он не работаетonOptionsItemSelected не вызвал фрагмент с setDisplayHomeAsUpEnabled в AppCompatActivity

здесь некоторые выдержки из моего кода

Фрагмент:

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    rootView = inflater.inflate(R.layout.fragment_gallery, container, false); 
    setHasOptionsMenu(true); 
    actionBar = ((AppCompatActivity)getActivity()).getSupportActionBar(); 
    actionBar.setTitle("Portfolio"); 
    updateGallery(); 
    return rootView; 
} 


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

    public void updateGallery() { 
    if (activeAlbum>0) { 
     actionBar.setDisplayHomeAsUpEnabled(true); 
    } else { 
     actionBar.setDisplayHomeAsUpEnabled(false); 
    } 
...... 
} 

    @Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     default: 
      break; 
    } 
    return false; 
} 

MainActivity:

public class MainActivity extends AppCompatActivity {...} 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

.... 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.addDrawerListener(toggle); 
    toggle.syncState(); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 


...... 
} 


    public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

onOptionsItemSelected не запускается ни в MainActivity, ни в фрагменте

ответ

0

Фрагменты должны заявить, что они могут предоставить параметры. Посмотрите здесь:

https://developer.android.com/reference/android/app/Fragment.html#setHasOptionsMenu(boolean)

Я думаю, вам просто нужно позвонить setHasOptionsMenu (истинный) в onCreateView() ваш фрагмент.

+0

спасибо за ссылку, я посмотрю (я уже называют setHasOptionsMenu (правда)) я боюсь что-то еще можно было бы мешать onOptionsItemSelected (может быть, я должен попытаться добавить новый " пустой "фрагмент для тестирования) – jthomas