无法使用setText更改片段TextView

Tom*_*omC 1 android android-fragments actionbarsherlock

我似乎无法更改我的fragmentActivity片段中的textview中的文本.另外我尝试过frag.getView().findViewById,虽然我认为这是正确的方法,但返回null并抛出一个nullpointer异常.

如果我在Fragment本身中编写方法来设置文本并使用getView(),我也会得到nullpointer异常.

另外值得注意的是,加载的第一个片段(由fragment:name调用)使用相同的代码加载和填充文本.它只FragmentTransaction.replace()在被叫之后才起作用

下面的代码不会抛出任何异常,但文本仍为空白.

public void onTabSelected(Tab tab, FragmentTransaction ft) {
    if(tab.getTag().equals("info")) {
        DisplayEventInfoFragment frag = new DisplayEventInfoFragment();
        ft.replace(R.id.detailsfragment, frag);
        final TextView mTimeView = (TextView)findViewById(R.id.ievent_title);
        final TextView mVenueView = (TextView)findViewById(R.id.ievent_venue);
        final TextView mDescView = (TextView)findViewById(R.id.ievent_description);
        mTimeView.setText(thisEvent.get("theTime")+" - "+thisEvent.get("endTime"));
        mVenueView.setText(thisEvent.get("venue"));
        mDescView.setText(thisEvent.get("description"));

    } else if(tab.getTag().equals("location")) {
        //DisplayEventMapFragment frag = new DisplayEventMapFragment();
        //ft.replace(R.id.detailsfragment, frag);
    }

}
Run Code Online (Sandbox Code Playgroud)

Chr*_*ner 6

查询主视图或片段的任何子视图时,必须等到调用Fragment.onCreateView().

看来奇怪的是,父Activity负责修改Fragments的布局组件.使用Fragments的一个主要优点是它们可以自包含并在整个应用程序中重用.

也许更可行的方法是覆盖片段的onActivityCreated()或onStart()(在onCreateView()之后调用),并让它们在那里填充TextView.