【发布时间】:2013-12-04 06:28:51
【问题描述】:
我的 ListFragment 位于 viewpager 中,并且操作栏有一个打开对话框片段的按钮。然后我尝试使用非静态方法调用一个函数,以从该对话框片段更新我的简单适配器,如下所示:
MyDialogFragment.java
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.dialogtitle);
builder.setSingleChoiceItems(R.array.items, indx, new DialogInterface.OnClickListener() {
MyListFragment updateItems = new MyListFragment();
public void onClick(DialogInterface dialog, int id) {
updateItems.updater();
dialog.dismiss();
...
}
}
MyListFragment.java
public void updater(){
ArrayList<Map<String, String>> list = buildData();
String[] from = { "name", "address", "postalcode", "item", "item2", "item3" };
int[] to = { R.id.title, R.id.address, R.id.postalcode, R.id.item1, R.id.imageView1, R.id.item3 };
ListAdapter adapter = new SimpleAdapter(getActivity(), list,
R.layout.rowlayout, from, to);
setListAdapter(adapter);
}
ListAdapter adapter = new SimpleAdapter(getActivity(), list, R.layout.rowlayout, from, to) 行给了我空指针异常。
应该附加片段,因为我通过在每个步骤中添加System.out.println("onAttach")(或 onResume 等)来尝试该片段的生命周期,以确保在打开对话框时片段的状态不会改变。
我还在该列表片段中添加了一个按钮来执行"updater();",它按预期工作。
有什么好的想法为什么从不同的片段运行时这不起作用?
感谢您的帮助!
编辑
设法通过添加来摆脱空指针异常
Context context; 到 ListFragment 的开头,context = getActivity(); 到 onCreate 方法,并在更新程序函数上使用该上下文而不是 getActivity。我在该函数中添加了几个 System.out.printlns,它们打印得很好,但列表视图本身仍然没有更新。不明白为什么,因为我知道的片段似乎是活动的(或附加的),并且从片段本身运行时该功能工作正常。
【问题讨论】:
标签: java android android-fragments