我想从弹出菜单中打开一个新活动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();
}
答案 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()
方法。