我有一个DialogFragment
使用自定义XML布局类。 在onCreateView()我得到参照按钮。 你点击它,选择文件。 当它被点击两件事情:1)它使用了一个布局吹气添加另一个XML布局到当前2)初始化三个变量,它们的值ListView
, ListArray
, SimpleAdapter
,而这些都是在类的顶部声明成员变量。 3)然后调用getActivity().startActivityForResult()
问题:上述三个变量设置为空,当我回来到这个活动中dialogfragment。
这是一个什么样的情况发生了详细的版本:
//before calling startActivityForResult()
I/NULLTEST SIMPLEADAPTER﹕ android.widget.SimpleAdapter@64cf1348
I/NULLTEST ATTACHMENTSLISTVIEW﹕ android.widget.ListView{64d1c2e0 VFED.VC. ......I. 0,0-0,0 #7f090014 app:id/attachmentsListView}
I/NULLTEST ATTACHMENTSLISTARRAY﹕ [{a_date_added=Added: Nov 1, a_name=My test file 0}, {a_date_added=Added: Nov 2, a_name=My test file 1}, {a_date_added=Added: Nov 3, a_name=My test file 2}]
// Inside onActivityResult()
I/NULLTEST SIMPLEADAPTER ONRESULT﹕ null
I/NULLTEST ATTACHMENTSLISTVIEW ONRESULT﹕ null
I/NULLTEST ATTACHMENTSLISTARRAY ONRESULT﹕ []
这整个代码被称为内DialogFragment
。 正如你可以在调用之前在上面看到startActivityForResult()
三个变量SimpleAdapter
, ListView
和ArrayList
设置为一定的价值。 他们是所有成员变量因此可以在这个类的任何地方调用。 里面onCreateView()
的方法DialogFragment
我得到参考对话框的按钮部分和附加setOnClickListener()
的按钮。 点击该按钮后,上述三个变量初始化为他们的价值观和我用Log.i
记录的值。 按钮onClick()
还调用getActivity().startActivityForResult();
让我选择从而揭开了完全不同的文件Activity
。 我选择的文件和onActivityResult()
的主机的方法Activity
被称为这对于我而言是MainActivity.java
。 从这里将数据传递到DialogFragment
这样:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
现在,我有机会到里面的数据DialogFragment
但在onActivityResult
中的DialogFragment
不Activity
,上述三个变量设置为null,但他们只在按钮上点击初始化,但会调用startActivityForResult()
等。 我不明白为什么他们重新设置为空。 我失去了一些重要的事情吗? 由于这个我不能叫例如simpleAdapter.notifyDataSetChanged()
如果我这样做在我的更新列表视图的这种精确的方式工作Activity
,而不是DialogFragment
但我需要做这里面DialogFragment
。 同时检索从另一个活动数据后更新列表视图中的任何其他方式都欢迎。 我只是需要一种方法,当我选择更多的数据来更新列表视图。
最后更新
我想道歉,为愚蠢的,我是做高度。 在我主持Activity
是MainActivity.java
,当这个Activity
会叫onActivityResult()
我会创建对话框片段作为这样的一个新实例: new MyDialogFragment().onActivityResult()
显然这就是为什么没有你的球员的工作方法作为onCreateView
不叫这个时候。 我有改变new MyDialogFragment()
来,我实际显示先前初始化对话片段,一切工作现在。 我将关闭这个问题。