我为我的班级构建一个简单的菜单应用程序。我在我的应用程序上有一个ListView,我正在努力使它当您单击列表中的项目时,您将被带到该项目的适当活动。到目前为止,我得到的意图在我的函数之外工作,但是当我在函数内部运行它会崩溃我的程序。任何人都可以指出我正确的方向
//set the item listener
menu.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String selected = ((TextView) view.findViewById(R.id.complaint)).getText().toString();
if(selected.equals("Pasta")){
runPasta();
}
}
});
}
public void runPasta(){
//Intent myIntent = new Intent(this, PastaItems.class);
//myIntent.putStringArrayListExtra("finalList", foodList);
this.startActivity(new Intent(this,PastaItems.class));
}
答案 0 :(得分:4)
您正在runPasta()
内调用OnItemClickListener
功能,这意味着this
引用OnItemClickListener
实例。尝试使用ActivityClassName.this
而不是this
。
答案 1 :(得分:4)
您使用this
作为context
,它在setOnItemClickListener
内无效,因为它会创建匿名内部类。
所以你需要更具体。
将此替换为 YourActivity.this
答案 2 :(得分:0)
这可能会解决您的问题。使用 getContext()可为您提供适当的上下文。 试试这个:
startActivity(new Intent(getContext(),PastaItems.class));
答案 3 :(得分:0)
您可以将adapterView
上的实例传递给runPasta方法,也可以通过runPasta方法将其称为startActivity(new Intent(adapterView.getContext(),PastaItems.class));
答案 4 :(得分:0)
确保您已在清单中声明 PastaItems 活动。