2011-06-22 10 views
4

ここで私はいくつかのコードを書いたが出力を得ていない。 どうして私は間違っているのですか? ....、事前に感謝を私を導いてくださいAndroid、コンテキストメニューを作成するには...

more_tab_menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu 
xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
    android:id="@+id/feeds" 
    android:title="Feeds"/> 
<item 
    android:id="@+id/friends" 
    android:title="Friends"/> 
<item 
    android:id="@+id/about" 
    android:title="About"/> 
</menu> 

MenuTest.java

public class MenuTest extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
} 

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, 
     ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    MenuInflater inflater =getMenuInflater(); 
    inflater.inflate(R.menu.more_tab_menu, menu); 
} 
@Override 
public boolean onContextItemSelected(MenuItem item) { 
    AdapterContextMenuInfo contextMenuInfo=(AdapterContextMenuInfo)item.getMenuInfo(); 
    switch(item.getItemId()) 
    { 
    case R.id.feeds: 
     break; 
    case R.id.friends: 
     break; 
    case R.id.about: 
     break; 
    } 

    return super.onContextItemSelected(item); 
} 
} 

私はミスをどこにやって教えてください...? onOptionsItemSelectedでも

MenuInflater inflater =getMenuInflater(); 
inflater.inflate(R.menu.more_tab_menu, menu); 
return true; 

return true; 

またonCreateOptionsMenuとonOptionsItemSelectedを使用し、これに

super.onCreateContextMenu(menu, v, menuInfo); 
MenuInflater inflater =getMenuInflater(); 
inflater.inflate(R.menu.more_tab_menu, menu); 

が変更に:

答えて

5

は、今あなたはこれを持っています。

+0

ここで私はあなたに応じて変更を加えましたが、画面にコンテキストメニューが表示されませんでした... –

+0

他の変更..? –

+0

申し訳ありませんが、私は投稿に何か間違って投稿しました..私はそれを変更しました。今すぐお試しください –

3

registerForContextMenuでメニューを登録する必要があります。

コンテキストメニューを提供するビューためには

this pageからは、コンテキストメニューの ビューを「登録」しなければなりません。 registerForContextMenu()を呼び出して、 コンテキストに表示する表示を メニューに渡します。このビューが 長押しを受信すると、コンテキスト メニューが表示されます。

上記のコードはうまくいきます。コンテンツメニューをビューに登録するだけで済みます。

あなたは画面内のどこからでも、コンテキストメニューを起動したい場合は、次の

のは、あなたのレイアウトmain.xmlは次のようであるとしましょう:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/mainLayout" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

</LinearLayout> 

あなたがして、作成したコンテキストメニューを登録します(onCreateに)次

LinearLayout layout = (LinearLayout)findViewById(R.id.mainLayout); 
registerForContextMenu(layout); 

ですから、エミュレータでこれを実行し、Androidのデスクトップ、Yに長いをクリックしない場合メニューがポップアップします。

0

この置き換えます。これは、携帯電話のメニューボタンを押したときに表示されているメニュー項目になります

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    super.onCreateOptionsMenu(menu); 

    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.more_tab_menu, menu); 

    return true; 
} 

:これにより

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 

    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.more_tab_menu, menu); 
}  

を。

+0

'android.support.v4.app.Fragment'で利用できないメソッド –

関連する問題