【问题标题】:android-can't get value of edit text in fragment [duplicate]android-无法获取片段中编辑文本的值[重复]
【发布时间】:2016-10-14 21:36:50
【问题描述】:

我已尝试获取 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" />

提前致谢!

【问题讨论】:

  • 名字为空
  • 请张贴fragment_add_patient.xml。确保它有一个 ID 为 FirstName 的 EditText。
  • 我发布了 fragment_add_patient
  • xml 中的edittext id 是“PatientFirstName”,但在您的代码中,您使用“FirstName”将代码更改为“PatientFirstName”。
  • 没有ID为FirstNameEditText

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


【解决方案1】:

FirstName EditText 为空,因为 findViewById 方法试图查找 ID 为 FirstName 但正确 ID 为 PatientFirstName 的编辑文本

要解决问题,请更换

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

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

【讨论】:

    【解决方案2】:

    只是您试图查询布局中不存在的 id 。

    “名字”EditText 的实际 ID 是“PatientFirstName”。也试着让你的代码有点组织如下

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

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

    【讨论】:

    • 我假设“全局”是指“字段”。局部变量没问题。 OnClickListeners 可以使用匿名内部类。
    猜你喜欢
    • 2020-03-04
    • 2011-05-30
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多