我正在尝试将各种片段添加到操作栏活动。
这是一个片段(嵌套在主要活动中):
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。
那我该如何解决这个问题呢?
答案 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));