5

ここでいくつかのコードを書きましたが、出力が得られません.なぜそのコンテキストメニューが表示されないのか教えてください.どこで間違いを犯していますか. 私を案内してください、前もって感謝します....

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);
}
}

どこが間違っているのか教えてください...?

4

3 に答える 3

6

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

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

これを次のように変更します。

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

onOptionsItemSelected にも:

return true;

onCreateOptionsMenu と onOptionsItemSelected も使用します。

于 2011-06-22T12:16:43.313 に答える
3

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

このページから

ビューがコンテキストメニューを提供するには、ビューをコンテキストメニューに「登録」する必要があります。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デスクトップを長押しすると、メニューがポップアップ表示されます。

于 2011-06-22T12:36:10.283 に答える
0

これを置き換えます:

@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 onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);

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

    return true;
}

これにより、電話機のメニュー ボタンを押したときにメニュー項目が表示されます。

于 2012-11-05T11:36:29.607 に答える