Dan*_*Dan 28 android fragment oncreate findviewbyid
我在我的第一应用为Android的过程中,我有一个Fragment是被添加到我Activity的Activity的onCreate()方法.我现在面临的问题是,我无法找到任何的内部包含的意见,Fragment从Activity的onCreate()方法.
其他线程建议这是因为Fragment尚未充气,因此findViewById()将为包含在其中的任何视图返回null Fragment.
这就是我的意思:
活动:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.out.println("activity onCreate");
setContentView(R.layout.activity_main);
if (savedInstanceState != null) {
return;
}
initialiseUI(); // Fragment added to Activity
System.out.println("end of activity onCreate");
}
Run Code Online (Sandbox Code Playgroud)
分段:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
System.out.println("fragment onCreateView");
return inflater.inflate(R.layout.event_log, container, false);
}
Run Code Online (Sandbox Code Playgroud)
这打印结果:
activity onCreate活动结束onCreate片段onCreateView
因为这个命令,任何试图访问的意见Fragment中Activity的onCreate()方法(使用findViewById())产生一个NullPointerException作为Fragment的onCreateView()唯一被调用的结束之后Activity的onCreate().
使用添加后的FragmentManger's 没有帮助.executePendingTransactions()Fragment
基本上,我不得不把问题代码中Activity的onStart()方法,而不是onCreate()作为onStart()后会发生Fragment的onCreateView().
有没有人有什么标准的做法在这里,否则我怎么可以让我的片段-视图-访问中的代码工作Activity的onCreate()方法是什么?
bie*_*eux 22
更新您的观点onCreateView().
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.event_log, container, false);
TextView tv = (TextView) view.findViewById(R.id.text);
tv.setText("hello world");
return view;
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您的更改取决于Activity你Fragment连接到,使用onActivityCreated().
@Override
public void onActivityCreated (Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
TextView tv = (TextView) getView().findViewById(R.id.text);
tv.setText(getActivity.getSomeText());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33284 次 |
| 最近记录: |