[英]Error getting value from EditText
出於某種原因,我無法從帶有OnClickListener的按鈕的EditText中獲取文本。 我想獲取這些值並將其放入data [],然后將其傳輸到我的主要活動中。 由於某種原因,它會中斷onClick()方法中的if語句。 我已經檢查了布局元素的所有id,這不是問題。
這是我的片段的源代碼:
package com.xivi0n.materialcalculator;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.Toast;
/**
* A simple {@link Fragment} subclass.
*/
public class FirstFragment extends Fragment implements View.OnClickListener {
RadioGroup rd;
CheckBox cb;
Button calculate;
OnHeadlineSelectedListener sendData;
private EditText yEditText;
private EditText xEditText;
private RadioGroup type;
float data[] = new float[6];
public FirstFragment() {
// Required empty public constructor
}
public interface OnHeadlineSelectedListener {
public void onArticleSelected(float data[]);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
sendData = (OnHeadlineSelectedListener)context;
} catch (ClassCastException e) {
throw new ClassCastException(context.toString()
+ " must implement OnHeadlineSelectedListener");
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_first, container, false);
rd = (RadioGroup) v.findViewById(R.id.isolationOptions);
cb = (CheckBox)v.findViewById(R.id.isolationCB);
xEditText = (EditText) v.findViewById(R.id.xValue);
yEditText = (EditText) v.findViewById(R.id.yValue);
type = (RadioGroup) v.findViewById(R.id.typeOf);
calculate = (Button) v.findViewById(R.id.calculateButton);
cb.setOnClickListener(this);
calculate.setOnClickListener(this);
return v;
}
public void onClick(View v) {
if (v==cb) {
if (cb.isChecked()) {
rd.setVisibility(View.VISIBLE);
} else {
rd.setVisibility(View.INVISIBLE);
}
} else if (v==calculate){
if ((xEditText.getText().toString()!="") && (yEditText.getText().toString()!="")){
data[0] = (float)1;
data[1] = Float.parseFloat(xEditText.getText().toString());
data[2] = Float.parseFloat(yEditText.getText().toString());
data[3] = (float) type.indexOfChild(getActivity().findViewById(type.getCheckedRadioButtonId()));
if (cb.isChecked()){
data[4] = (float)1;
data[5] = (float) rd.indexOfChild(getActivity().findViewById(type.getCheckedRadioButtonId()));
} else {
data[4] = (float)0;
data[5] = (float)0;
}
sendData.onArticleSelected(data);
} else {
Toast.makeText(getActivity(), "Invalid input, check all the parameters!", Toast.LENGTH_LONG).show();
}
}
}
}
使用.equals
比較字符串。
代替((xEditText.getText().toString()!= ""))
使用(!(xEditText.getText().toString().equals(""));
作為if語句的條件。
打開視圖的ID:
public void onClick(View v) {
switch (v.getId()){
case R.id.isolationCB:
//do something
break;
case R.id.calculateButton:
//do something else
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.