在阅读了有关如何执行此操作的许多主题后,我仍然遇到此问题。此问题是onListItemClick方法不会启动该活动。活动已在清单文件中注册。该方法适用于toast,但是当调用start intent时会发生错误。
protected void onListItemClick(ListView listView, View view, int position, long id) {
super.onListItemClick(listView, view, position, id);
Toast.makeText(getApplicationContext(), "click", Toast.LENGTH_LONG).show();
Log.i("DebugMessage", "clicked an item..");
Intent i = new Intent(view.getContext(),Getfiles.class);
// startActivity(i);
}
答案 0 :(得分:1)
问题(我认为)是你使用错误的上下文来启动一个意图,以下解决方案应该有效。
您可以尝试使用:
new Intent(getApplicationContext(), Getfiles.class);
或者
private final Activity activity = this;
protected void onListItemClick(ListView listView, View view, int position, long id) {
super.onListItemClick(listView, view, position, id);
Toast.makeText(getApplicationContext(), "click", Toast.LENGTH_LONG).show();
Log.i("DebugMessage", "clicked an item..");
Intent i = new Intent(activity, Getfiles.class);
startActivity(i);
}
答案 1 :(得分:0)
如果所有其他方法都失败了,您可以使用处理程序,并发布将启动该活动的Runnable。这将延迟活动打开,直到你的onListItemClick方法返回,并且应该正常工作。
这样做。向您的班级添加处理程序(在onCreate上创建):
private Handler _handler;
_handler = new Handler();
在你的onListItemClickMethod中使用:
_handler.post(new Runnable() {
void run() {
startIntent(...);
}
});