2017-03-10 29 views
1

アクションバーのアイコンをクリックしてポップアップメニューを表示した後、ポップアップメニュー項目をクリックし、Javaコードのトーストメッセージが状態を変えることを示します偽から真に。問題は、ポップアップメニューを再び開いたときにアイテムがクリックされないということです。また、ポップアップメニュー項目をクリックすると、状態が偽から真に変化することが常に示されます。ポップアップメニュー項目のAndroidのクリックがポップアップメニューに表示されない

誰にもこの問題のコードソリューションがありますか?

ありがとうございました。

Javaコード:

@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_action, menu); 

    return true; 
} 

@Override 
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(); 

    if (id == R.id.action_popup) { 

     View menuItemView = findViewById(R.id.action_popup); 
     PopupMenu popupMenu = new PopupMenu(this, menuItemView); 
     MenuInflater inflater = popupMenu.getMenuInflater(); 
     inflater.inflate(R.menu.popup_menu, popupMenu.getMenu()); 

     popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 

      public boolean onMenuItemClick(MenuItem item) { 

       int id = item.getItemId(); 

       if (id == R.id.opt1_name) { 

        if (item.isChecked()){ 
         item.setChecked(false); 
         Toast.makeText(getApplicationContext(), "Logic Set False= " + item, Toast.LENGTH_SHORT).show(); 
        } 
        else{ 
         item.setChecked(true); 
         Toast.makeText(getApplicationContext(), "Logic Set True= " + item, Toast.LENGTH_SHORT).show(); 
        } 


       } 

        else if (id == R.id.opt2_date) { 

        if (item.isChecked()){item.setChecked(false); 
         Toast.makeText(getApplicationContext(), "Logic Set False= " + item, Toast.LENGTH_SHORT).show(); 
        } 
        else{item.setChecked(true); 
         Toast.makeText(getApplicationContext(), "Logic Set True= " + item, Toast.LENGTH_SHORT).show(); 
        } 

       } 

       return true; 
      } 
     }); 

     popupMenu.show(); 
    } 

return super.onOptionsItemSelected(item); 
} 

menu_action.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=".PlayerActivity"> 

     <item android:id="@+id/action_popup" android:title="Sort Popup" android:icon="@drawable/ic_sort" 
      android:showAsAction="always" /> 

     <item android:id="@+id/action_settings" android:title="Settings" 
      app:showAsAction="never" /> 

     <item android:id="@+id/action_help" android:title="Help" 
      app:showAsAction="never" /> 

</menu> 

popup_menu.xml

<?xml version="1.0" encoding="utf-8"?> 
    <menu xmlns:android="http://schemas.android.com/apk/res/android"> 

     <group android:checkableBehavior="single"> 
      <item 
       android:id="@+id/opt1_name" 
       android:title="Name" /> 

      <item 
       android:id="@+id/opt2_date" 
       android:title="Date" /> 
     </group> 

    </menu> 
+0

これを参照してください:http://stackoverflow.com/questions/3040374/runtimeexception-your-content-must-have-a-listview-whose-id-attribute-is-andro – rafsanahmad007

+0

Logcat出力を無視してください。間違って投稿され、この投稿とは関係ありません。アプリはLogcatに出力を表示していません。 – user2308699

答えて

0

あなたは、あなたがあなたのmainlistで1つのリストビューを持っている必要があります調べる場合は、エラーをチェックしてください。 idが@android:id/listのxmlファイル

<ListView 
    android:id="@android:id/list" 
    android:layout_height="wrap_content" 
    android:layout_height="fill_parent"/> 
+0

Logcatの出力を無視してください。間違って投稿されました。この投稿とは関係ありません。アプリはLogcatに出力を表示していません。 – user2308699

関連する問題