它只是一个关于如何加载片段的问题 有具体的代码:
公共类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打印: - &gt;&gt; 19 handleMessage - &gt;&gt; 34 onCreate - &gt;&gt; 40 onCreateView
我不明白为什么打印这些。感谢
答案 0 :(得分:0)
以下事件链导致问题中提到的输出被打印出来:
MainActivity
的{{1}}方法,将空消息发布到附加到主(UI)线程的消息队列的onResume()
。这会将Handler
打印到日志中。-->>19 handleMessage
现在已准备好与用户进行交互,并且需要显示包含MainActivity
的UI。 BlankFragment
通过按此顺序调用SupportFragmentManager
和BlankFragment
方法来初始化onCreate()
。这会分别打印onCreateView()
和-->>34 onCreate
。在-->>40 onCreateView
片段回调中,您应该执行一次性初始化,在onCreate()
中,您应该返回片段显示的onCreateView()
层次结构。