簡體   English   中英

從EditText獲取值時出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM