在启动另一个活动后单击Listview按钮完成或销毁活动

时间:2016-01-05 08:18:44

标签: android baseadapter activity-finish getview

我有一个具有Listview的Activity ListActivity,另一个类CustomListAdapter扩展了BaseAdapter。

ListActivity中的代码

customAdapter = new CustomListAdapter(list);
TripList.setAdapter(customAdapter);

在CustomListAdapter的getView()中,我给布局充气。有一个按钮,点击该按钮,我开始另一个活动。

我想在另一个活动开始后完成ListActivity。 使用以下代码我的应用程序崩溃。

((Activity) ctx).finish();

日志

01-05 11:06:04.319: E/AndroidRuntime(4319): FATAL EXCEPTION: main
01-05 11:06:04.319: E/AndroidRuntime(4319): Process: com.example.myapp, PID: 4319
01-05 11:06:04.319: E/AndroidRuntime(4319): java.lang.NullPointerException
01-05 11:06:04.319: E/AndroidRuntime(4319):     at com.example.myapp.CustomListAdapter$1.onClick(CustomListAdapter.java:71)

请帮帮我。

3 个答案:

答案 0 :(得分:4)

首先,您可以发布 Logcat

<强> FLAG_ACTIVITY_CLEAR_TOP

  

如果设置,则正在启动的活动已在运行中   当前任务,然后而不是启动它的新实例   活动,其上的所有其他活动将被关闭   这个意图将作为一个传递到(现在在顶部)旧活动   新的意图。

<强> FLAG_ACTIVITY_NEW_TASK

  

如果用于启动任务的根活动,它将带来任何   当前正在将该任务的实例运行到前台,然后   明确它的根状态。

您可以使用Intent.FLAG_ACTIVITY_CLEAR_TOP |Intent.FLAG_ACTIVITY_NEW_TASK

最后,应该是,

   Intent intent = new Intent(ctx, NewActivityName.Class);
   intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |Intent.FLAG_ACTIVITY_NEW_TASK);
   intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
   startActivity(intent);

答案 1 :(得分:2)

用新活动替换您的活动名称。

startActivity(new Intent(ctx,NewActivity.class));
((Activity) ctx).finish();

答案 2 :(得分:1)

因为我在getView()中启动了一个活动 ((Activity) ctx).finish();无效。我只是将其更改为((Activity)parent.getContext()).finish();并且它正在运行