空指针异常 - 获取EditText值

时间:2013-09-14 22:49:26

标签: android android-edittext

这是我的第一个问题,如果我没有很好地提出这个问题,我会提前道歉。我已经查看了与我的问题类似的其他问题,但是我没有找到一个很好的解决方案来满足我的程序中发生的事情。

所以我的问题是我正在尝试从名为num1的{​​{1}}字段中为名为EditText的变量赋值,但到目前为止我没有任何运气。

抛出异常的java文件中的段是:

num1TextField

我提前感谢对这个问题的每一个贡献。


这是我的EditText num1Field = (EditText)v.findViewById(R.id.num1TextField); num1 = num1Field.getText().toString(); 文件:

fragment_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> 代码:

ComputeFragment.java

谢谢大家,祝你有个美好的一天!

3 个答案:

答案 0 :(得分:7)

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

您应该在onCreateView

中声明变量
final EditText num1Field = (EditText)v.findViewById(R.id.num1TextField);

并使用它来获取onClick

中的值
num1 = num1Field.getText().toString();

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

试试这段代码 -

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