按钮没有做任何事情

时间:2017-03-14 10:17:05

标签: android button android-edittext

我正在尝试制作一个可以将里程转换为km的转换器,反之亦然,现在问题是每当我点击按钮时都没有发生任何事情。价值观保持不变。

我的代码是:

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.EditText;


public class Distance extends Fragment {


    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        View v = inflater.inflate(R.layout.activity_distance, container, false);
        Button button = (Button) v.findViewById(R.id.button12);
        final EditText editText = (EditText) v.findViewById(R.id.edittext1);
        final EditText editText2 = (EditText) v.findViewById(R.id.edittext2);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (editText.getText() != null && editText2.getText() == null) {
                    String s = editText.getText().toString();
                    Double d = Double.parseDouble(s) * 0.621371;
                    editText2.setText(d.toString());
                } else if (editText2.getText() != null && editText.getText() == null) {
                    String s = editText2.getText().toString();
                    Double d = Double.parseDouble(s) / 0.621371;
                    editText.setText(d.toString());
                }

            }
        });
        return v;
    }


}

9 个答案:

答案 0 :(得分:2)

将if-else条件更改为此。

if (!editText.getText().toString().equals("") && editText2.getText().toString.equals("")) {

与另一个相似。

答案 1 :(得分:1)

首先全球宣布:

EditText editText ;
EditText editText2; 

然后在onCreateView:

 editText = (EditText) v.findViewById(R.id.edittext1);
 editText2 = (EditText) v.findViewById(R.id.edittext2);

最后,使用此代码:

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (editText.getText().toString().equals("") && editText.getText().toString().equals("")) {
                    String s = editText.getText().toString();
                    Double d = Double.parseDouble(s) * 0.621371;
                    editText2.setText(d.toString());
                } else if (editText2.getText().toString().equals("") && editText.getText().toString().equals("")) {
                    String s = editText2.getText().toString();
                    Double d = Double.parseDouble(s) / 0.621371;
                    editText.setText(d.toString());
                }

            }
        });

希望这有帮助。

答案 2 :(得分:1)

正确调用了按钮的回调。你应该检查你的条件。

答案 3 :(得分:1)

editText2.getText()== null并且editText.getText()== null始终为false,因为此处getText()不能为null。

答案 4 :(得分:1)

请检查edittext值,而不是检查null。你的代码就像这样

if ((!TextUtils.isEmpty(editText.getText().toString()) && (TextUtils.isEmpty(editText2.getText().toString())) 

Simillaraly修改另一个条件。

答案 5 :(得分:1)

将if-else条件更改为此。

if (!TextUtills.isEmpty(editText.getText().toString()) && !TextUtils.isEmpty(editText2.getText().toString)) {

}

答案 6 :(得分:1)

   if (!editText.getText().toString().isEmpty() && editText2.getText() .toString().isEmpty() ) {
                String s = editText.getText().toString();
                Double d = Double.parseDouble(s) * 0.621371;
                editText2.setText(d.toString());
            } else if (!editText2.getText().toString().isEmpty() && editText.getText().toString().isEmpty()) {
                String s = editText2.getText().toString();
                Double d = Double.parseDouble(s) / 0.621371;
                editText.setText(d.toString());
            }

而不是使用string.equals(""),明智的做法是使用string.isEmpty()

答案 7 :(得分:0)

您已经初始化了editTexteditText2,这就是为什么你的if和else条件都不满意且你的代码没有响应的原因。

final EditText editText = (EditText) v.findViewById(R.id.edittext1);
final EditText editText2 = (EditText) v.findViewById(R.id.edittext2);

您的条件与以下代码不符:

if (editText.getText() != null && editText2.getText() == null) {
String s = editText.getText().toString();
Double d = Double.parseDouble(s) * 0.621371;
editText2.setText(d.toString());
} else if (editText2.getText() != null && editText.getText() == null) {
String s = editText2.getText().toString();
Double d = Double.parseDouble(s) / 0.621371;
editText.setText(d.toString());
}

答案 8 :(得分:0)

Button button = (Button) findViewById(R.id.button12);
final EditText editText = (EditText) findViewById(R.id.edittext1);
final EditText editText2 = (EditText) findViewById(R.id.edittext2);

button.setOnClickListener(new View.OnClickListener() {
@Override
      public void onClick(View v) {
           if (!editText.getText().toString().equals("") && editText2.getText().toString().equals("")) {

                    String s = editText.getText().toString();
                    Double d = Double.parseDouble(s) * 0.621371;
                    editText2.setText(d.toString());
              } else if (!editText2.getText().toString().equals("") && editText.getText().toString().equals("")) {
                    String s = editText2.getText().toString();
                    Double d = Double.parseDouble(s) / 0.621371;
                    editText.setText(d.toString());
              }

      }
});

此代码正常运作。