来自除主

时间:2015-07-30 19:21:02

标签: java android xml android-fragments

我正在尝试将各种片段添加到操作栏活动。

这是一个片段(嵌套在主要活动中):

public static class ScheduleFragment extends Fragment {

    private static final String ARG_SECTION_NUMBER = "section_number";

    public static ScheduleFragment newInstance(int sectionNumber) {
        ScheduleFragment fragment = new ScheduleFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);
        return fragment;
    }

    public ScheduleFragment(){
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        View rootView = inflater.inflate(R.layout.schedule_layout, container, false);
        return rootView;
    }
}

各自的xml:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text=""
        android:id="@+id/textView"/>
</RelativeLayout>

当我打电话

    titles.add((TextView) findViewById(R.id.textView));
    titles.get(0).setText(R.string.Departure_Location);

从MainActivity类中,我得到Null指针异常,我猜这是因为R.id.textView是在“schedule_layout.xml”中定义的,而不是在“main_activity.xml”中定义的。

Android studio checker找到R.id.textView,即使我在“main_activity.xml”中没有textView。

那我该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:0)

答案很简单:

因为我

View rootView = inflater.inflate(R.layout.schedule_layout, container, false);

我添加&#34; schedule_layout&#34;到rootView,基本上,当我做

titles.add((TextView) findViewById(R.id.textView));

我告诉程序从main_activity布局中获取textView,因为没有,所以它返回null。

所以我需要告诉它从schedule_layout获取它,通过:

titles.add((TextView) rootView.findViewById(R.id.textView));