Android活动无法从弹出菜单开始

时间:2015-12-18 01:34:37

标签: java android android-intent android-activity

我想从弹出菜单中打开一个新活动Make_a_contact。我确定的问题只与下面的代码有关,因为当我取消注释下面的代码 - Toast.makeText等等...(并删除我想修复的代码)时,它可以正常工作。

感谢您的帮助!

public void Show_Settings(View v) {
//this is the settings button, whose onclick is identified in menu_thisisatest.xml
    PopupMenu popup = new PopupMenu(this, v);
    MenuInflater inflater = popup.getMenuInflater();
    inflater.inflate(R.menu.menu_thisisatest, popup.getMenu());
    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
        Intent intent = new Intent(this, Make_a_contact.class);
        return true;
//            @Override
//            public boolean onMenuItemClick(MenuItem item) {
//                Toast.makeText(getApplicationContext(),item.toString(),Toast.LENGTH_SHORT).show();
//            return true;
//        }
    });
    popup.show();
}

2 个答案:

答案 0 :(得分:3)

您需要在生成意图后开始新的活动。尝试拨打

startActivity(intent);

当然,您需要在onMenuItemClick()方法中包含该代码,该方法目前已在您的代码中注释掉,即

@Override
public boolean onMenuItemClick(MenuItem item) {
    Intent intent = new Intent(this, Make_a_contact.class);
    startActivity(intent);
    return true;
}

答案 1 :(得分:2)

关于对@Benjamin Scharbau的回答的评论,当您使用intent创建new Intent(this, Make_a_contact.class)时,this是对PopupMenu.OnMenuItemClickListener类的匿名实例的引用继承自Context(这是错误的原因)。您应该在Intent的构造函数中使用上下文,因此请使用对调用(前景)Activity的引用,例如

Intent intent = new Intent(ClassNameOfCallingActivity.this, Make_a_contact.class)

并将intent传递给startActivity()方法。