使用Android的findViewById时出现问题

时间:2016-04-24 23:28:29

标签: android

我正在使用一些预先生成的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.

3 个答案:

答案 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在评论中建议清理和重建。这是我尝试的第一件事,就是这一切,谢谢。

解决方案:清理并重建项目。