-1
時發生,它只是一個關於如何有具體的代碼加載片段 問題:有些問題是使用ViewPager和片段
公共類MainActivity擴展FragmentActivity {
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager pager = (ViewPager) findViewById(R.id.pager);
List<Fragment> fragments = new LinkedList<>();
BlankFragment blankFragment = new BlankFragment();
fragments.add(blankFragment);
handler = blankFragment.getHandler();
ContactPagerAdapter adapter = new ContactPagerAdapter(getSupportFragmentManager(), fragments);
pager.setAdapter(adapter);
}
@Override
protected void onResume() {
super.onResume();
handler.sendEmptyMessage(0);
}
}
片段 - 只需打印一些日誌:
class BlankFragment extends Fragment {
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
Log.d("TAG", "-->>19 handleMessage");
}
};
public Handler getHandler() {
return handler;
}
public BlankFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("TAG", "-->>34 onCreate");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d("TAG", "-->>40 onCreateView");
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_blank, container, false);
}
}
和logcat的打印: - >> 19的handleMessage - >> 34的onCreate - >> 40 onCreateView
我不是理解它爲什麼打印這些。由於
我明白了,但是當我調用viewPager.setAdapter()時,爲什麼沒有立即創建片段。在執行onResume()方法之前,Fragment尚未創建。 –
片段在您執行'new BlankFragment()'的瞬間被創建(實例化)。但是,只有當片段(或包含它的ViewPager)需要顯示時,即活動恢復時,Android系統纔會調用'BlankFragment'的'onCreate()'和'onCreateView()'生命週期回調方法。 –
我想現在我明白了,所以我將handler.sendMessage()修改爲handler.sendMessageDelay(fragment,500),這可能會顯示一些結果,但有時它會很好,而不好的效果是一週。 –