我正在为片段创建一个示例应用程序。
我创建了一个片段并从中渲染视图。
但是,当我在布局中使用android:id="@+id/text2"
时尝试渲染视图时,应用程序崩溃。
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView android:id="@+id/text2"
style="?android:textAppearanceLarge"
android:textStyle="bold"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below ="@id/text2"
android:inputType="textPersonName"
android:text="FIR Number"
android:ems="10"
android:layout_centerHorizontal="true"
android:id="@+id/editText"
tools:layout_marginTop="10dp"
style="@android:style/Widget.EditText"
android:textAlignment="center" />
</RelativeLayout>
</ScrollView>
但是当我使用android:id="@android:id/text2"
,
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView android:id="@android:id/text2"
style="?android:textAppearanceLarge"
android:textStyle="bold"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below ="@android:id/text2"
android:inputType="textPersonName"
android:text="FIR Number"
android:ems="10"
android:layout_centerHorizontal="true"
android:id="@+id/editText"
tools:layout_marginTop="10dp"
style="@android:style/Widget.EditText"
android:textAlignment="center" />
</RelativeLayout>
</ScrollView>
两种情况下片段视图中的代码都保持不变。
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
// Inflate the layout containing a title and body text.
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_accident_details_step1, container, false);
// Set the title view to show the page number.
((TextView) rootView.findViewById(android.R.id.text2)).setText(getString(R.string.title_template_step, mPageNumber + 1));
return rootView;
}
为什么它在一个案例中有效,为什么不在另一个案例中呢?有人可以帮忙吗?
答案 0 :(得分:1)
您需要使用R.id.text2
指向R
文件中生成的ID
使用@+id/
,阅读更多Syntax docs
,并阅读有关Accessing Platform Resources
所以使用
((TextView) rootView.findViewById(R.id.text2)).setText(getString(R.string.title_template_step, mPageNumber + 1));
// ^^^^^^^^^^
答案 1 :(得分:0)
你在片段中使用了android id。
((TextView) rootView.findViewById(android.R.id.text2)).setText(getString(R.string.title_template_step, mPageNumber + 1));
更改为
((TextView) rootView.findViewById(R.id.text2)).setText(getString(R.string.title_template_step, mPageNumber + 1));