開發者諮詢:以下內容可能會損害一些開發者的敏感性,請自行閱讀風險。我開始在Android開發/ java中,我的目標是從遠程休息服務加載JSON,並在ViewPager上使用它2個片段,目前我正在這樣做(請閱讀開發人員諮詢:),我只是顯示代碼的重要組成部分,在這裏,在一個algorythmic方式,無需檢查語法):加載Json在ViewPager上的幾個片段上,需要更好的方式
我聲明一個變量的viewpager,我打算回電話使用getActivity from fragment
Viewpager.java
public class Viewpager extends AppCompatActivity{
...
public static JSONObjInvitationParser jsonParser;
...
}
Fragment1.java
public class Fragment1 extends ListFragment{
...
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final Viewpager activity = (Viewpager) getActivity();
activity.jsonParser = CallMyRestServiceAndGetTheJSON();
populateListView(activity.jsonParser.getanOtherListArrayOfSTuff());
}
}
在第二個片段,我不能當然onCreatView期間打電話給我activy.jsonParser,否則我得到pointerNull,我的猜測是, Viewpager正在調用所有的createView,setUserVisibleHint也是如此。
Fragment2.java
public class Fragment2 extends ListFragment{
...
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
final Viewpager activity = (Viewpager) getActivity();
if (isVisibleToUser) {
System.out.println(activity.jsonParser.getListArrayOfSTuff());
populateListView(activity.jsonParser.getListArrayOfSTuff());
}
}
...
}
}
這樣,它的工作原理,我可以實際上可以填充我的2個片段呼籲只有一次,其餘的服務我listvews,但必須有一個wayyyy更好的辦法比這個醜陋的黑客:/不幸的是,我還不知道,任何人都可以讓我知道他將如何正確實施?
非常感謝:)
@ Thanh:thx你的答案,你的意思是這樣的:http://pastebin.com/azq16AhB? – RaccoonDeveloper
是的,這正是我所做的 –
好吧,非常感謝您的建議,我更喜歡你的方式肯定:)我會用它一段時間,看看它是如何;)接受的答案! – RaccoonDeveloper