这是我的第一个问题,如果我没有很好地提出这个问题,我会提前道歉。我已经查看了与我的问题类似的其他问题,但是我没有找到一个很好的解决方案来满足我的程序中发生的事情。
所以我的问题是我正在尝试从名为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
谢谢大家,祝你有个美好的一天!
答案 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();
}
}