gpt4 book ai didi

java - 为什么从对话框 fragment 运行时列表 fragment 上的 getActivity() 不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 15:21:09 24 4
gpt4 key购买 nike

我的 ListFragment 位于 View 页面中,操作栏有一个可打开对话框 fragment 的按钮。然后我尝试使用非静态方法调用函数来从该对话框 fragment 更新我的简单适配器,如下所示:

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) 行给了我空指针异常。

应该附加 fragment ,因为我通过将 System.out.println("onAttach") (或 onResume 等)添加到每个步骤来尝试该 fragment 的生命周期,以确保状态当对话框打开时, fragment 的内容不会改变。

我还在该列表 fragment 中添加了一个按钮来执行“updater();”,它按预期工作。

有什么好的想法为什么从不同的 fragment 运行时不起作用?

感谢您的帮助!

编辑

通过添加设法摆脱空指针异常 Context context; 到 ListFragment 的开头,context = getActivity(); 到 onCreate 方法,并在更新程序函数上使用该上下文而不是 getActivity。我向该函数添加了几个 System.out.printlns,这些函数打印得很好,但 ListView 本身仍然没有更新。无法理解为什么,因为据我所知,该 fragment 似乎是 Activity 的(或附加的),并且该函数在从 fragment 本身运行时工作正常。

最佳答案

我发现arraylist初始化没有正确完成..

希望你尝试一下...

如果您的构建数据方法发生任何错误。它将被修复。

  ArrayList<Map<String, String>> list = new ArrayList<Map<String, String>>();
list = buildData();

关于java - 为什么从对话框 fragment 运行时列表 fragment 上的 getActivity() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20368557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com