Java 空点异常->;editText.getText().toString()
当我执行此操作时,将出现空点异常:Java 空点异常->;editText.getText().toString(),java,android,Java,Android,当我执行此操作时,将出现空点异常: String Serial = SerialField.getText().toString(); 代码如下: public static class PointCreation extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInst
String Serial = SerialField.getText().toString();
代码如下:
public static class PointCreation extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.point_creation, container, false);
Button buttonGuardar = (Button) view.findViewById(R.id.buttonGuardar);
buttonGuardar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getActivity().getApplicationContext(), "tou a carregar no botao guardar", Toast.LENGTH_LONG).show();
final EditText SerialField = (EditText) view.findViewById(R.id.Serial);
final EditText ObservationField = (EditText) view.findViewById(R.id.Observation);
String Serial = SerialField.getText().toString();
String Observation = ObservationField.getText().toString();
pointsList.add(new Point("Serial", Observation, false, 1, 2, 3, 4,
5, 6, 7, 8, 9));
Toast.makeText(getActivity().getApplicationContext(), Observation, Toast.LENGTH_LONG).show();
}
});
Button buttonApagar = (Button) view.findViewById(R.id.buttonApagar);
buttonApagar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getActivity().getApplicationContext(), "tou a carregar no botao apagar", Toast.LENGTH_LONG).show();
}
});
return view;
}
}
以下是xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/serial"
android:layout_width="150dp"
android:layout_height="45dp"
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"
android:text="Serial"
/>
<EditText
android:id="@+id/Serial"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/serial"
android:inputType="text"
android:layout_width="fill_parent"
>
</EditText>
<TextView
android:id="@+id/Observations"
android:layout_width="150dp"
android:layout_height="45dp"
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"
android:layout_below="@+id/serial"
android:text="Observações" />
<EditText
android:id="@+id/Observation"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/Observations"
android:inputType="text"
android:layout_width="fill_parent"
android:layout_below="@+id/serial"
>
</EditText>
</RelativeLayout>
您需要将其移出按钮
onClick
EditText SerialField = (EditText) view.findViewById(R.id.Serial);
所发生的事情是,它将EditText
作为按钮的子项进行查找,但实际情况并非如此
应该如此
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.point_creation, container, false);
final EditText SerialField = (EditText) view.findViewById(R.id.Serial);
final EditText ObservationField = (EditText) view.findViewById(R.id.Observation);
Button buttonGuardar = (Button) view.findViewById(R.id.buttonGuardar);
buttonGuardar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getActivity().getApplicationContext(), "tou a carregar no botao guardar", Toast.LENGTH_LONG).show();
String Serial = SerialField.getText().toString();
String Observation = ObservationField.getText().toString();
pointsList.add(new Point("Serial", Observation, false, 1, 2, 3, 4,
5, 6, 7, 8, 9));
Toast.makeText(getActivity().getApplicationContext(), Observation, Toast.LENGTH_LONG).show();
}
});
Button buttonApagar = (Button) view.findViewById(R.id.buttonApagar);
buttonApagar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getActivity().getApplicationContext(), "tou a carregar no botao apagar", Toast.LENGTH_LONG).show();
}
});
return view;
}
编辑:
正如tyczj所指出的,您可以重命名
@Override
public void onClick(View view)
到
并将视图
更改为最终视图
。但无需每次单击按钮时都初始化编辑文本
,因为在这种情况下,视图
是您的按钮。将onClickListener中的视图重命名为其他视图,它应该可以工作
private EditText SerialField;
private EditText ObservationField;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.point_creation, container, false);
SerialField = (EditText) view
.findViewById(R.id.Serial);
ObservationField = (EditText) view
.findViewById(R.id.Observation);
Button buttonGuardar = (Button) view.findViewById(R.id.buttonGuardar);
buttonGuardar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getActivity().getApplicationContext(),
"tou a carregar no botao guardar", Toast.LENGTH_LONG)
.show();
String Serial = SerialField.getText().toString();
String Observation = ObservationField.getText().toString();
pointsList.add(new Point("Serial", Observation, false, 1, 2, 3,
4, 5, 6, 7, 8, 9));
Toast.makeText(getActivity().getApplicationContext(),
Observation, Toast.LENGTH_LONG).show();
}
});
Button buttonApagar = (Button) view.findViewById(R.id.buttonApagar);
buttonApagar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getActivity().getApplicationContext(),
"tou a carregar no botao apagar", Toast.LENGTH_LONG)
.show();
}
});
return view;
}
想想这里发生了什么:
View view = inflater.inflate(R.layout.point_creation, container, false);
Button buttonGuardar = (Button) view.findViewById(R.id.buttonGuardar);
buttonGuardar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) { //Hello view
Toast.makeText(getActivity().getApplicationContext(), "tou a carregar no botao guardar", Toast.LENGTH_LONG).show();
final EditText SerialField = (EditText) view.findViewById(R.id.Serial);
您正试图从单击的视图中找到该视图,因为单击的视图正在传递给onClick
方法
解决方案:
尝试在onCreateView而不是onClick中初始化EditText,并使其全局化,如下所示:
EditText SerialField, ObservationField;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.point_creation, container, false);
SerialField = (EditText) view.findViewById(R.id.Serial);
ObservationField = (EditText) view.findViewById(R.id.Observation);
Button buttonGuardar = (Button) view.findViewById(R.id.buttonGuardar);
将这两行移出setOnClickListener
final EditText SerialField = (EditText) view.findViewById(R.id.Serial);
final EditText ObservationField = (EditText) view.findViewById(R.id.Observation);
它会起作用的
试一试…发布Logcat错误,请发布xmlpoint\u creation.xml
?没错,我真是个笨蛋,谢谢!会在10点后回来接受<代码>查看视图
在这种情况下应该是最终的,如果有用请接受答案@user2421208将尽快完成,如果可能的话。Raghunandan首先回答:“我指出了正确的解决方案naa..我是一个初学者,所以请支持我..@Lal阅读此文
EditText SerialField, ObservationField;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.point_creation, container, false);
SerialField = (EditText) view.findViewById(R.id.Serial);
ObservationField = (EditText) view.findViewById(R.id.Observation);
Button buttonGuardar = (Button) view.findViewById(R.id.buttonGuardar);
final EditText SerialField = (EditText) view.findViewById(R.id.Serial);
final EditText ObservationField = (EditText) view.findViewById(R.id.Observation);