首先,關於我的項目的一些信息:從asynctask返回結果到一個片段
我有一個由多個片段組成的應用程序。 (我有一個類擴展了FragmentActivity,另一個擴展了FragmentPagerAdapter。) 所以實際上我的代碼在Fragments中運行。
我在其中一個片段中調用了一個asynctask來做一些計算。 asyncTask是一個單獨的文件,該類不在Fragment類中。
所以1個文件是asynctask,另一個是fragmet(片段中的變量不能被asynctask直接訪問!!!)。
我可以使用ProgressDialog顯示asyncTask的結果。 但是我希望能夠將數據(asynctask的結果)返回到我的片段中的變量。什麼到目前爲止,我已經試過是:
- 運用asyncatask.execute的get()()
我試圖做這樣的:
我用下面的代碼被稱爲點擊按鈕後。
mytask1 = new myAsyncTask(this);
String result =mytask1.execute(value1).get();
但是,這會導致主線程卡住並等待asynctask完成。
2.使用loginSharePreferens
loginPreferences = getActivity().getSharedPreferences("loginPrefs", Context.MODE_PRIVATE);
loginPrefsEditor = loginPreferences.edit();
loginPrefsEditor.putString("result", result);
loginPrefsEditor.commit();
這給了我的錯誤。
3.我也是這個
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
這是與第二方法類似嘗試。
4,我試圖建立在我的片段的方法,將剛纔設置的值,我試圖把它叫做片段
MyFrragment1.this.setRestult(1); // is called in the onPostExecute of the asyncTask
public void setRestult(int result){
this.test1=result; ///inside of the fragment
}
這裏面給我的錯誤:「類型MyFragment1沒有外圍實例可在範圍內訪問「
我不知道還有什麼要嘗試。有任何想法嗎 ?
http://stackoverflow.com/questions/16627492/how-to-return-an-object-to-the-fragment-from-a-nested- static-asynctask /類似的問題 – Raghunandan
@Raghunandan我認爲你給我的鏈接是相反的。我想檢索asynctask的結果回我的片段 –
另外,我的情況是不同的,我沒有asynctask裏面的片段,但分開 –