访问片段查看从活动的onCreate(Access Fragment View from Activ

2019-06-27 09:10发布

我在我的第一应用为Android的过程中,我有一个Fragment是被添加到我的ActivityActivityonCreate()方法。 我现在面临的问题是,我无法找到任何包含的范围内的意见FragmentActivityonCreate()方法。

其他线程都认为,这是因为该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");
}

分段:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) {
System.out.println("fragment onCreateView");
    return inflater.inflate(R.layout.event_log, container, false);
}

这将输出结果:

活动的onCreate活动的onCreate片段的端onCreateView

因为这个命令,任何试图访问的观点FragmentActivityonCreate()方法(使用findViewById()产生一个NullPointerException ,作为FragmentonCreateView()只被调用的结束后ActivityonCreate()

使用FragmentMangerexecutePendingTransactions()加入后, Fragment并没有帮助。

基本上,我已经被迫把问题代码在ActivityonStart()方法,而不是onCreate()onStart()发生后的FragmentonCreateView()

有没有人有什么标准的做法在这里,否则我怎么可以让我的内片段-视图-访问代码的工作ActivityonCreate()方法?

Answer 1:

更新你的意见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;
}

或者,如果你改变取决于ActivityFragment连接到,使用onActivityCreated()

@Override
public void onActivityCreated (Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    TextView tv = (TextView) getView().findViewById(R.id.text);
    tv.setText(getActivity.getSomeText());
}


文章来源: Access Fragment View from Activity's onCreate