Android Null指针异常-获取EditText值

Android Null指针异常-获取EditText值,android,android-edittext,Android,Android Edittext,这是我在这里的第一个问题,如果我问得不好,我会提前道歉。我已经研究了与我的问题类似的其他问题,但是我没有找到一个好的解决方案来满足我的程序中正在发生的事情 因此,我的问题是,我试图从名为EditText的num1TextField字段中为名为num1的变量赋值,但到目前为止,我没有任何运气 引发异常的java文件中的段是: EditText num1Field = (EditText)v.findViewById(R.id.num1TextField); num1 = num1Field.get

这是我在这里的第一个问题,如果我问得不好,我会提前道歉。我已经研究了与我的问题类似的其他问题,但是我没有找到一个好的解决方案来满足我的程序中正在发生的事情

因此,我的问题是,我试图从名为
EditText
num1TextField
字段中为名为
num1
的变量赋值,但到目前为止,我没有任何运气

引发异常的java文件中的段是:

EditText num1Field = (EditText)v.findViewById(R.id.num1TextField);
num1 = num1Field.getText().toString();
我提前感谢对这个问题的每一个贡献


这是我的
fragment\u compute.xml
文件:

<?xml version="1.0" encoding="utf-8"?>
<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/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="14dp"
    android:text="@string/compute_activity"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView1"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="44dp"
    android:text="@string/num_1"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<EditText
    android:id="@+id/num1TextField"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView2"
    android:layout_centerHorizontal="true"
    android:ems="10"
    android:inputType="number"
    android:gravity="center" >

    <requestFocus />
</EditText>

<EditText
    android:id="@+id/num2TextField"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/num1TextField"
    android:layout_below="@+id/textView3"
    android:ems="10"
    android:inputType="number"
    android:layout_centerHorizontal="true"
    android:gravity="center" >
</EditText>

<TextView
    android:id="@+id/textView4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/num2TextField"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="22dp"
    android:text="@string/result"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
    android:id="@+id/textView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/num1TextField"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="22dp"
    android:text="@string/num_2"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
    android:id="@+id/result"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView4"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="22dp" />

<Button
    android:id="@+id/compute_multiply"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignRight="@+id/num2TextField"
    android:layout_below="@+id/result"
    android:layout_marginTop="40dp"
    android:text="@string/multiply" />

<Button
    android:id="@+id/compute_add"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/compute_multiply"
    android:layout_alignBottom="@+id/compute_multiply"
    android:layout_alignLeft="@+id/num2TextField"
    android:text="@string/add" />

</RelativeLayout>

EditText num1Field=(EditText)v.findviewbyd(R.id.num1TextField)中的参数v是您的按钮,而不是整个视图

您应该在
onCreateView
中声明变量:

final EditText num1Field = (EditText)v.findViewById(R.id.num1TextField);
并使用它来获取
onClick中的值

num1 = num1Field.getText().toString();
请尝试以下代码-

@Override
            public void onClick(View view) {
        EditText num1Field = (EditText)v.findViewById(R.id.num1TextField);
          if(num1Field.getText().length() > 0) {
                        num1 = num1Field.getText().toString();
          }
}

参数视图就是按钮。如果按钮与EditText位于同一父级上,您还可以执行以下操作:

View parentView = (View) view.getParent();
EditText num1TextField = (EditText)parentView.findViewById(R.id.num1TextField);

我指的是
public void onClick(视图v)
中的参数。你可以在这里查一查:我知道这将是我忽略的事情。非常感谢你!
View parentView = (View) view.getParent();
EditText num1TextField = (EditText)parentView.findViewById(R.id.num1TextField);