2015-04-22 4 views
0

У меня здесь необычная проблема. Моя панель действий работала правильно, тогда я пошел проверить ее сейчас и полностью остановить. При нажатии они не дают ответа. Один - кнопка возврата, а другая - кнопка отправки. Оба они не работают. Вот мой код для менюЭлементы панели действий не работают при нажатии

ActivityOne.java

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_send, menu); 
    return true; 
} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle item selection 
    switch (item.getItemId()) { 

     case R.id.home: 
      super.onBackPressed(); 
      return true; 

     case R.id.action_send: 
      new PostUpLoad().execute(); 
      return true; 

     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

menu_send.xml

<?xml version="1.0" encoding="utf-8"?> 
<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=".ActivityOne"> 

<item 
    android:id="@+id/action_send" 
    android:orderInCategory="100" 
    android:title="@string/send" 
    android:icon="@drawable/ic_send" 
    app:showAsAction="ifRoom" /> 
</menu> 

Все кажется хорошо, но они не работают вообще. Любая помощь будет принята с благодарностью.

ответ

0

Заменить R.id.home с android.R.id.home.

+0

Теперь я получаю и ошибаюсь с R.id.action_send: Выдает сообщение об ошибке, что его нельзя отменить –

+0

Только заменить 'R.id.home' не заменить' R.id.action_send' –

+0

Ладно, попробуем это сейчас. –

0

Вы упускаете перерывы в вашем случае переключения, и я не уверен, о возвращении истинно в (меню Menu) onCreateOptionsMenu

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_send, menu); 
    return super.onOptionsItemSelected(item); 
} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
// Handle item selection 
switch (item.getItemId()) { 

    case R.id.home: 
     super.onBackPressed(); //might use finish() instead 
     break; 

    case R.id.action_send: 
     new PostUpLoad().execute(); 
     break; 

    default: 
     super.onOptionsItemSelected(item); 
} 

}

+0

О, я думал, что доход будет компенсировать это. Попробуем попробовать и посмотрим, работает ли. –

+0

Дайте нам знать, как это работает, и отметьте, как было решено, если это произойдет! –

+0

Возврат true в этом случае прекрасен (вы возвращаете true, если обрабатываете клик). Я считаю, super.onOptionsItemsSelected (item) просто возвращает false. Также возврат внутри коммутатора, очевидно, завершит выполнение коммутатора, так как он возвращает метод, так что это тоже не проблема. –