2014-11-05 75 views
1

我有一個DialogFragment類與自定義XML佈局。 在onCreateView()我得到一個按鈕的引用。你點擊它來選擇文件。 當它被點擊兩件事情: 1)它使用了一個佈局吹氣添加另一個XML佈局到當前 2)初始化三個變量,它們的值ListViewListArraySimpleAdapter,而這些都是在頂部聲明的成員變量的類。 3)然後它調用getActivity().startActivityForResult()值onActivityResult後設置爲空

問題:當我回到這個活動的dialogfragment時,上述三個變量設置爲null。



這裏是發生了什麼事的詳細的版本:

//before calling startActivityForResult() 
I/NULLTEST SIMPLEADAPTER﹕ [email protected] 
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,ListViewArrayList設置爲某個值。它們都是成員變量,因此可以在這個類的任何地方調用。 方法DialogFragment我得到對話框的按鈕部分的參考,並將setOnClickListener()附加到按鈕。單擊此按鈕時,上述三個變量將初始化爲其值,並使用Log.i來記錄這些值。按鈕onClick()也會調用getActivity().startActivityForResult();來允許我選擇一個文件,從而打開一個完全不同的Activity。我選擇的文件和onActivityResult()方法的主機Activity被稱爲這對我的情況是MainActivity.java。從這裏將數據傳遞到DialogFragment這樣:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

現在我有DialogFragment內,但在獲得的數據DialogFragment不是ActivityonActivityResult,上述都設置爲null三個變量,但它們只在按鈕點擊時被初始化,但是會調用startActivityForResult()等等。我不明白他們爲什麼被設置爲空。我在這裏錯過了重要的東西嗎?由於這個,我不能打電話給例如simpleAdapter.notifyDataSetChanged()。如果我在Activity而不是DialogFragment中更新我的列表視圖的確切方法,但我需要在DialogFragment內部執行此操作。也歡迎從其他活動檢索數據後更新任何其他方式的ListView。我只需要一種方法來更新該列表視圖,當我選擇更多的數據。

最後更新

我想道歉,爲愚蠢的,我是做高度。在我的主機Activity這是MainActivity.java,當這Activity將調用onActivityResult()我會創建一個對話框片段的新實例,因此:new MyDialogFragment().onActivityResult(),顯然這就是爲什麼你的傢伙方法沒有工作,因爲onCreateView這次沒有被調用。我已將new MyDialogFragment()更改爲先前初始化的對話框片斷,我實際上正在顯示並且現在一切正常。我將結束這個問題。

回答

0

檢查請求代碼是否是來自請求的正確代碼。您可以申請其他代碼

+0

它是正確的。我在onActivityResult中收到的數據是正確的。 – someguy234 2014-11-05 06:41:23

+0

也調用了這樣的工作'iv.setImageURI(data.getData());'和'iv'的創建方式完全相同。 'iv = ImageView' – someguy234 2014-11-05 06:42:16

0

當您在嘗試使用此功能之前開始活動時。

intent.putExtra("return-data", true); 
+0

nope。它仍然使變量爲空 – someguy234 2014-11-05 16:12:01

+0

@ someguy234你有沒有找到任何解決方案? – 2016-09-05 08:18:14