在Android Studio里使用Fragment開發兼容平板的應用時遇到了一些小問題。由於開發初衷是兼容手機和平板,使用A和B兩個模擬器,一個用於測試手機,一個用於測試平板。在模擬器A運行應用時一點兒問題也沒有,模擬器B運行應用卻顯示異常。
模擬器A運行效果如下:
模擬器B應用效果運行如下,左邊標題頁和上圖主頁上為同一個Fragment,當應用運行時數據卻沒有加載出來。
懷疑是應用啟動時,有的方法沒有正常執行,導致一部分應用數據沒有加載。由於初始化操作是在onAttach()中完成的。查看代碼,經編輯器提示,發現Fragment中的onAttach()有兩個可供覆寫的方法一個為onAttach(Activity activity),一個是onAttach(Context context),前者已經被廢棄。我使用的是onAttach(Context context)。在代碼中加入輸出信息。
public void onAttach(Context context) { super.onAttach(context); initNews(); adapter = new NewsAdapter(context,R.layout.news_item,newsList); Log.d(TAG, "onAttach"); }
對比發現,當模擬器A運行應用時,onAttach(Context context),是正常執行的,一旦部署到模擬器B中運行,就不會執行此方法。用onAttach(Activity activity)替換onAttach(Context context)后,部署到模擬器A中,onAttach()正常執行,問題得到解決。