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错误,请发布xml
point\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);