我想从弹出菜单中打开一个新的活动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();
}
生成意图后,您需要开始新的"活动"。尝试调用
startActivity(intent);
当然,您需要将该代码包含在onMenuItemClick()
方法中,该方法当前已在代码中注释掉,即
@Override
public boolean onMenuItemClick(MenuItem item) {
Intent intent = new Intent(this, Make_a_contact.class);
startActivity(intent);
return true;
}
关于@Benjamin Scharbau答案的注释,当您使用new Intent(this, Make_a_contact.class)
创建intent
时,this
是对PopupMenu.OnMenuItemClickListener
类的匿名实例的引用,该实例不是从Context
继承的(这就是错误的原因)。您应该在Intent
的构造函数中使用上下文,因此使用对调用(前台)Activity
的引用,例如
Intent intent = new Intent(ClassNameOfCallingActivity.this, Make_a_contact.class)
并将CCD_ 11传递给CCD_。