嗨,我尝试创建一个片段类:
import android.support.v4.app.Fragment;
public class UpdatesFragment extends Fragment {
TextView output ;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View view = inflater.inflate(R.layout.updates_layout, null, false);
output = (TextView) getView().findViewById(R.id.jsonData);
return view;
}
}
但是当我在设备上运行我的应用程序时,应用程序会中断。
在安卓工作室编辑器上:
方法调用 'getView().findViewById(R.id.jsonData)' 可能会产生 'java.lang.NullPointerException'
在设备上调试器:
java.lang.NullPointerException: Try to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a 空对象引用
这是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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".UpdatesFragment"
android:background="#24ff93">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="HackPundit Blogs"
android:textStyle="bold"
android:id="@+id/heading"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textSize="38dp"
android:textColor="#230cff" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Large Text"
android:textSize="15dp"
android:textStyle="bold"
android:id="@+id/jsonData"
android:layout_marginTop="42dp"
android:layout_below="@+id/heading"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:textColor="#000000" />
</RelativeLayout>
获取视图的正确方法是:
View view = inflater.inflate(R.layout.updates_layout, null, false);
output = (TextView) view.findViewById(R.id.jsonData);
您必须使用膨胀的视图来查找视图,而不是getView()
在片段中引用视图的正确方法是在此方法中;
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//reference your fragments views here
output = (TextView) getView().findViewById(R.id.jsonData);
}