我有一个具有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)
请帮帮我。
答案 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();
并且它正在运行