我正在使用一些预先生成的Android代码,但它无法运行。
这是片段的onCreateView函数:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_tabmain, container, false);
TextView textView = (TextView) rootView.findViewById(R.id.section_label);
textView.setText(getString(R.string.section_format, getArguments().getInt(ARG_SECTION_NUMBER)));
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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.startandselect.agora.tabmain$PlaceholderFragment">
<TextView
android:id="@+id/section_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
但是当我运行问题时,我在textView.setText
行上收到错误,因为textView
为空。 textView
为null,因为它之前的行无法找到文本视图。 findViewById
找不到它,但我不知道为什么。
我调试后发现真正的textView有一个id:2131492994,而R.id.section_label的id是2131492997.
答案 0 :(得分:5)
尝试使用以下内容:
TextView textView = (TextView) findViewById(R.id.section_label);
而不是:
TextView textView = (TextView) rootView.findViewById(R.id.section_label);
答案 1 :(得分:2)
你在另一个活动布局上有相同的android:id of TextView。
答案 2 :(得分:1)
Karakuri在评论中建议清理和重建。这是我尝试的第一件事,就是这一切,谢谢。
解决方案:清理并重建项目。