我試圖在我的應用程序啓動時通過刮網站來檢索一些圖像URL和圖像文本。然後,我想使用由imageTexts和imageURLs創建的數組來創建ViewPager,以便將圖像顯示爲可滾動的圖庫。通過解析元數據網頁創建圖庫
我執行網絡任務,獲取網頁並將HTML解析爲AsyncTask(downloadTask(),代碼如下)。
我的問題是,因爲這發生在後臺,它沒有時間在代碼嘗試顯示圖像之前獲取和分析數據。我得到一個空指針錯誤代碼時碰到
新ViewPagerAdapter(這一點,getimageText(),getimageURLS())
我可以推斷,這最終應該存儲圖像的URL和數組圖片文字尚未創建。這是我的應用程序崩潰的時候。
這是我的代碼。我對Android和Java都很陌生,所以很清楚我可以做很多幫助!
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get the view from viewpager_main.xml
setContentView(R.layout.viewpager_main);
// Fetch the list of URLs using a background network task
new downloadTask().execute(BASE_URL);
// Locate the ViewPager in viewpager_main.xml
viewPager = (ViewPager) findViewById(R.id.pager);
// Pass results to ViewPagerAdapter Class
adapter = new ViewPagerAdapter(this, getimageText(), getimageURLS());
// Binds the Adapter to the ViewPager
viewPager.setAdapter(adapter);
}
感謝您的幫助。我最終退後一步,從另一個角度接近它。而不是在postExecute中放回一個回調函數,我把View Pager intialisation代碼放在那裏。無論如何inBackground任務完成後調用它,所以我沒有看到回調的需要。不過謝謝你的建議。它讓我讀了更多,這讓我清晰。 – piratemurray
聽起來不錯。唯一的一點是,通過這個回調函數,你可以將所有的實例化代碼保存在一個地方,而不是遍及你的代碼。 –