2013-07-01 17 views
11

私はすべてのメニューを右上に置くアクションバーを持っています。これはユーザーがクリックしてメニューオプションを開きます。アクションバーメニュー項目onclick?

私は、私はそれを使用する各活動にこれでアクションバーのメニューを膨らま:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main2, menu); 

     return true; 
    } 

そしてmain2.xmlのための私のXMLは次のとおりです。

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/action_searchHome" 
     android:orderInCategory="100" 
     android:showAsAction="never" 
     android:title="Seach"/> 



</menu> 

私の質問は、私はonclickのを置けばいいのさxmlの項目で、もしそうならonclickメソッドをどこに置くのですか?私はこのアクションバーを起動するすべてのアクティビティにそれを入れる必要がありますか?

+4

私は(あなたが[onOptionsItemSelected](https://developer.android.com/reference/android/app/Activity.html#onOptionsItemSelectedを探しているかもしれないと思いますandroid.view.MenuItem)) – adneal

+0

Eghdk reply、http://stackoverflow.com/questions/17396870/actionbar-menu-item-onclick#comment-25260264 – LuckyMe

答えて

29

あなたは、このようなあなたのメニュー項目にonClick属性を追加する場合:あなたの活動に続いて

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/action_searchHome" 
     android:orderInCategory="100" 
     android:showAsAction="never" 
     android:onClick="doThis" 
     android:title="Seach"/> 



</menu> 

を:

public void doThis(MenuItem item){ 
    Toast.makeText(this, "Hello World", Toast.LENGTH_LONG).show(); 
} 

注:

ActionBarSherlockをを非推奨です。 Android 4.0以上のアプリを開発している場合を除き、使用しないでください。 ActionBar Sherlock Menu Item OnClick

:あなたはライブラリを使用している場合しかし、あなたはこのような何かを行うことができ、

import com.actionbarsherlock.view.MenuItem;

とまた

import com.android.view.MenuItem;

ない

をインポートする必要があります@adnealが言及している。

+2

の下で私のコメントをチェックしてください。これは方法ではありません。 AcitonBarsはクリックを処理する独自の方法を持っています。ここを見てください:http://developer.android.com/guide/topics/ui/menus.html#options-menu – LuckyMe

+0

両方の方法で動作します。また、答えの最後にあなたがリストアップした方法についても触れました。 – EGHDK

+4

はい、技術的にはどちらもうまくいきますが、片方向は正しい方法であり、もう一方は恐ろしいひどい方法です。コード内に混乱と不整合が生じます。神の愛のために、この方法を決してメニュー項目に使用しないでください。 – LuckyMe

0
私の意見で

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    add_btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      onCreateDialog(getTaskId()); 
     } 
    }); 
} 


<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=".MainActivity"> 
<item android:id="@+id/action_settings" android:title="@string/action_settings" 
    android:orderInCategory="100" app:showAsAction="never" /> 
<item android:id="@+id/add_text_id" android:title="Add" 
    android:icon="@drawable/ic_add_btn" 
    android:orderInCategory="100" app:showAsAction="ifRoom" />