如何使用Button打开ContextMenu

时间:2014-02-01 01:39:31

标签: android button contextmenu

我想在用户点击context_menu时显示Button,但我遇到了一些问题。由于某种原因,菜单没有出现,也许有些东西我不见了。你能帮我吗? 那是我的代码:

public class MainActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button btn = (Button) findViewById(R.id.btn);
    btn.setOnCreateContextMenuListener(this);
    registerForContextMenu(btn);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            v.showContextMenu();
        }
    });

}
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.context_menu, menu);
    }
@Override
public boolean onContextItemSelected(MenuItem item) {
    int i = item.getItemId();
    if (i == R.id.share) {
        Intent sendIntent = new Intent();
        sendIntent.setAction(Intent.ACTION_SEND);
        sendIntent.putExtra(Intent.EXTRA_TEXT, "Leggi");
        sendIntent.setType("text/plain");
        startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.chooser_title)));
        return true;
    } else {
        return onContextItemSelected(item);
    }
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    return true;
}

这是context_menu中的R.menu

<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/share"
    android:title="Condividi"
    android:orderInCategory="100"
    app:showAsAction="never" />
<item android:id="@+id/web"
    android:title="Mostra articolo"
    android:orderInCategory="100"
    app:showAsAction="never" />
<item android:id="@+id/add"
    android:title="Aggiungi nei Preferiti"
    android:orderInCategory="100"
    app:showAsAction="never" />

3 个答案:

答案 0 :(得分:0)

您可以使用openContextMenu而不是showContextMenu。

registerForContextMenu(btn);
btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        openContextMenu(v);
    }
});

答案 1 :(得分:0)

或许可以将app:showAsAction="never"更改为android:showAsAction="never"? (或者只是删除它)。

答案 2 :(得分:0)

你可以试试这段代码 代码:

public class MainActivity extends Activity {

    Button btn;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn=(Button) findViewById(R.id.Button1);
        registerForContextMenu(btn);
    btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            btn.showContextMenu();

        }
    }); 

    }


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

        menu.add(0,1,0,"copy");
        menu.add(0,2,0,"paste");
        super.onCreateContextMenu(menu, v, menuInfo);
    }

}