从已实现onListItemClick的列表活动中启动意图

时间:2011-11-21 20:04:13

标签: android listview

在阅读了有关如何执行此操作的许多主题后,我仍然遇到此问题。此问题是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);
}

2 个答案:

答案 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(...);
    }
});