android-can得不到片段中编辑文本的价值

时间:2016-10-14 21:36:50

标签: java android android-layout android-studio android-edittext

我尝试过获取edittext值但不起作用。这是我在android片段中的代码:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    final View v=inflater.inflate(R.layout.fragment_add_patient, container, false);
    final EditText FirstName=(EditText) v.findViewById(R.id.FirstName);
    final Button addPatientButton=(Button) v.findViewById(R.id.AddPatientButton);
    addPatientButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isOnline()) {
                try {
                    if (FirstName.getText().toString().trim().equals("")) {
                        FirstName.setError("First Name is required!");
                        return;
                    }

我在此行收到错误:FirstName.getText().toString().trim().equals("")

错误如下:Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference

这是我的fragment_add_patient 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"
tools:context="com.example.ionut.myapplication.PatientController.AddPatientFragment">

<!-- TODO: Update blank fragment layout -->

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textPersonName"
    android:ems="10"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="80dp"
    android:id="@+id/PatientFirstName"
    android:hint="First Name" />
<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textPersonName"
    android:ems="10"
    android:layout_marginTop="27dp"
    android:id="@+id/PatientLastName"
    android:hint="Last Name"
    android:layout_below="@+id/PatientFirstName"
    android:layout_alignLeft="@+id/PatientFirstName"
    android:layout_alignStart="@+id/PatientFirstName" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textEmailAddress"
    android:ems="10"
    android:layout_below="@+id/PatientLastName"
    android:layout_alignRight="@+id/PatientLastName"
    android:layout_alignEnd="@+id/PatientLastName"
    android:layout_marginTop="25dp"
    android:id="@+id/Email"
    android:hint="Email" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="number"
    android:ems="10"
    android:layout_marginTop="22dp"
    android:id="@+id/PatientAge"
    android:hint="Age"
    android:layout_below="@+id/Email"
    android:layout_alignLeft="@+id/Email"
    android:layout_alignStart="@+id/Email" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="phone"
    android:ems="10"
    android:layout_below="@+id/PatientAge"
    android:layout_alignLeft="@+id/PatientAge"
    android:layout_alignStart="@+id/PatientAge"
    android:layout_marginTop="32dp"
    android:id="@+id/PatientPhone"
    android:hint="Phone" />


<Button
    android:text="Add Patient"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/AddPatientButton"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="77dp" />

<Spinner
    android:id="@+id/cspinner"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="25dp"
    android:layout_below="@+id/PatientPhone"
    android:layout_alignRight="@+id/PatientPhone"
    android:layout_alignEnd="@+id/PatientPhone"
    android:layout_alignLeft="@+id/PatientPhone"
    android:layout_alignStart="@+id/PatientPhone" />

提前致谢!

2 个答案:

答案 0 :(得分:2)

FirstName EditText为null,因为findViewById方法正在尝试查找ID为FirstName的editext,但正确的ID为PatientFirstName

要解决此问题,请替换

final EditText FirstName=(EditText) v.findViewById(R.id.FirstName);

final EditText FirstName=(EditText) v.findViewById(R.id.PatientFirstName);

答案 1 :(得分:0)

您只是尝试查询布局中的现有ID。

“名字”EditText的实际ID是“PatientFirstName”。还尝试使您的代码有点组织如下

1-将您的Button,EditText变量声明为可在片段内任何位置访问的全局变量

2-如果你要用点击事件添加更多按钮,那么你应该让你的片段或活动实现View.onClickListener