Android 如何在不单击的情况下更改EditText中的值?

Android 如何在不单击的情况下更改EditText中的值?,android,eclipse,onclick,android-edittext,Android,Eclipse,Onclick,Android Edittext,大家好,我制作了一个长度转换应用程序。它有11个基本单位,清除和转换按钮。 下面是我的应用程序的工作原理 用户输入所需值(根据单位)点击转换按钮,获得转换值 但我不想使用convert按钮(onClick),我希望每当我输入所需的输入时,输出会相应地被更改为输入,但仍然有效。 我们将不胜感激。 下面是MainActivity.java` public class MainActivity extends Activity { private EditText v1,v2,v3,v4,

大家好,我制作了一个长度转换应用程序。它有11个基本单位,清除和转换按钮。 下面是我的应用程序的工作原理 用户输入所需值(根据单位)点击转换按钮,获得转换值

但我不想使用convert按钮(onClick),我希望每当我输入所需的输入时,输出会相应地被更改为输入,但仍然有效。 我们将不胜感激。 下面是MainActivity.java`

public class MainActivity extends Activity { 

    private EditText v1,v2,v3,v4,v5,v6,v7,v8,v9,v11,v12;
    private Button Convert; 
    private Button Reset; 
    private double val1=0,val2=0,val3=0,val4=0,val5=0,val6=0,val7=0,val8=0,val9=0,val11=0,val12=0;

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    v1= ( EditText)findViewById(R.id.editText1); 
    v2= ( EditText)findViewById(R.id.editText2); 
    v3= ( EditText)findViewById(R.id.editText3); 
    v4= ( EditText)findViewById(R.id.editText4);
    v5= ( EditText)findViewById(R.id.editText5); 
    v6= ( EditText)findViewById(R.id.editTextAB); 
    v7= ( EditText)findViewById(R.id.editText7); 
    v8= ( EditText)findViewById(R.id.editText8);
    v9= ( EditText)findViewById(R.id.editText9);
    v11 = ( EditText)findViewById(R.id.editText6);
    v12= ( EditText)findViewById(R.id.editText10);

    Convert = (Button)findViewById(R.id.button1); 
    Reset = (Button)findViewById(R.id.button2); 
    Convert.setOnClickListener(new View.OnClickListener() 
    { 
    public void onClick(View v) 
    { 
    convertValues(); 
    } 
    } 
    ); 

    Reset.setOnClickListener(new View.OnClickListener() 
    { 
    public void onClick(View v) 
    { 
    reset(); 
    } 
    } 
    ); 
    } 

    void convertValues() 
    { 
    if (v1.getText().length() > 0 && !(v2.getText().length() > 0) && !(v3.getText().length() > 0) && !(v4.getText().length() > 0) && !(v5.getText().length() > 0) && !(v6.getText().length() > 0)&& !(v7.getText().length() > 0)&& !(v8.getText().length() > 0)&& !(v9.getText().length() > 0)&& !(v11.getText().length() > 0)&& !(v12.getText().length() > 0) ) 
    { 
    val1=Double.parseDouble(v1.getText().toString()); 
    val2=InchToCm(val1); 
    val3=InchToMl(val1);
    val4=InchToKm(val1);
    val5=InchToM(val1);
    val6=InchToY(val1);
    val7=InchToFt(val1);
    val8=InchToLg(val1);
    val9=InchToLgn(val1);
    val11=InchTomm(val1);
    val12=InchToNm(val1);
    } 
    else if(v2.getText().length() > 0 && !(v1.getText().length() > 0) && !(v3.getText().length() > 0) && !(v4.getText().length() > 0) && !(v5.getText().length() > 0) && !(v6.getText().length() > 0)&& !(v7.getText().length() > 0)&& !(v8.getText().length() > 0)&& !(v9.getText().length() > 0) && !(v11.getText().length() > 0)&& !(v12.getText().length() > 0)) 
    { 
    val2=Double.parseDouble(v2.getText().toString()); 
    val1=CmToInch(val2);
    val3=CmToMl(val2);
    val4=CmToKm(val2);
    val5=CmToM(val2);
    val6=CmToY(val2);
    val7=CmToFt(val2);
    val8=CmToLg(val2);
    val9=CmToLgn(val2);
    val11=CmTomm(val2);
    val12=CmToNm(val2);
    } 

    else if (v3.getText().length() > 0 && !(v2.getText().length() > 0) && !(v1.getText().length() > 0) && !(v4.getText().length() > 0) && !(v5.getText().length() > 0) && !(v6.getText().length() > 0)&& !(v7.getText().length() > 0)&& !(v8.getText().length() > 0)&& !(v9.getText().length() > 0) && !(v11.getText().length() > 0)&& !(v12.getText().length() > 0))   
    { 
    val3=Double.parseDouble(v3.getText().toString()); 
    val1=MlToInch(val3);
    val2=MlToCm(val3);
    val4=MlToKm(val3);
    val5=MlToM(val3);
    val6=MlToY(val3);
    val7=MlToFt(val3);
    val8=MlToLg(val3);
    val9=MlToLgn(val3);
    val11=MlTomm(val3);
    val12=MlToNm(val3);
    }


    else if (v4.getText().length() > 0 && !(v2.getText().length() > 0) && !(v1.getText().length() > 0) && !(v3.getText().length() > 0) && !(v5.getText().length() > 0) && !(v6.getText().length() > 0)&& !(v7.getText().length() > 0)&& !(v8.getText().length() > 0)&& !(v9.getText().length() > 0) && !(v11.getText().length() > 0)&& !(v12.getText().length() > 0))   
    { 
    val4=Double.parseDouble(v4.getText().toString()); 
    val1=KmToInch(val4);
    val2=KmToCm(val4);
    val3=KmToMl(val4);
    val5=KmToM(val4);
    val6=KmToY(val4);
    val7=KmToFt(val4);
    val8=KmToLg(val4);
    val9=KmToLgn(val4);
    val11=KmTomm(val4);
    val12=KmToNm(val4);
    }

    else if (v5.getText().length() > 0 && !(v2.getText().length() > 0) && !(v1.getText().length() > 0) && !(v3.getText().length() > 0) && !(v4.getText().length() > 0) && !(v6.getText().length() > 0)&& !(v7.getText().length() > 0)&& !(v8.getText().length() > 0)&& !(v9.getText().length() > 0)&& !(v11.getText().length() > 0)&& !(v12.getText().length() > 0) )   
    { 
    val5=Double.parseDouble(v5.getText().toString()); 
    val1=MToInch(val5);
    val2=MToCm(val5);
    val3=MToMl(val5);
    val4=MToKm(val5);
    val6=MToY(val5);
    val7=MToFt(val5);
    val8=MToLg(val5);
    val9=MToLgn(val5);
    val11=MTomm(val5);
    val12=MToNm(val5);
    }

    else if (v6.getText().length() > 0 && !(v2.getText().length() > 0) && !(v1.getText().length() > 0) && !(v3.getText().length() > 0) && !(v4.getText().length() > 0) && !(v5.getText().length() > 0)&& !(v7.getText().length() > 0)&& !(v8.getText().length() > 0)&& !(v9.getText().length() > 0)&& !(v11.getText().length() > 0)&& !(v12.getText().length() > 0) )   
    { 
    val6=Double.parseDouble(v6.getText().toString()); 
    val1=YToInch(val6);
    val5=YToM(val6);
    val2=YToCm(val6);
    val3=YToMl(val6);
    val4=YToKm(val6);
    val7=YToFt(val6);
    val8=YToLg(val6);
    val9=YToLgn(val6);
    val11=YTomm(val6);
    val12=YToNm(val6);
    }


    else if (v7.getText().length() > 0 && !(v2.getText().length() > 0) && !(v1.getText().length() > 0) && !(v3.getText().length() > 0) && !(v4.getText().length() > 0) && !(v5.getText().length() > 0)&& !(v6.getText().length() > 0)&& !(v8.getText().length() > 0)&& !(v9.getText().length() > 0) && !(v11.getText().length() > 0)&& !(v12.getText().length() > 0))   
    { 
    val7=Double.parseDouble(v7.getText().toString()); 
    val1=FtToInch(val7);
    val5=FtToM(val7);
    val6=FtToY(val7);
    val2=FtToCm(val7);
    val3=FtToMl(val7);
    val4=FtToKm(val7);
    val8=FtToLg(val7);
    val9=FtToLgn(val7);
    val11=FtTomm(val7);
    val12=FtToNm(val7);
    }

    else if (v8.getText().length() > 0 && !(v2.getText().length() > 0) && !(v1.getText().length() > 0) && !(v3.getText().length() > 0) && !(v4.getText().length() > 0) && !(v5.getText().length() > 0)&& !(v6.getText().length() > 0)&& !(v7.getText().length() > 0)&& !(v9.getText().length() > 0)&& !(v11.getText().length() > 0)&& !(v12.getText().length() > 0) )   
    { 
    val8=Double.parseDouble(v8.getText().toString()); 
    val1=LgToInch(val8);
    val5=LgToM(val8);
    val6=LgToY(val8);
    val2=LgToCm(val8);
    val3=LgToMl(val8);
    val4=LgToKm(val8);
    val9=LgToLgn(val8);
    val7=LgToFt(val8);
    val11=LgTomm(val8);
    val12=LgToNm(val8);
    }


    else if (v9.getText().length() > 0 && !(v2.getText().length() > 0) && !(v1.getText().length() > 0) && !(v3.getText().length() > 0) && !(v4.getText().length() > 0) && !(v5.getText().length() > 0)&& !(v6.getText().length() > 0)&& !(v7.getText().length() > 0)&& !(v8.getText().length() > 0)&& !(v11.getText().length() > 0)&& !(v12.getText().length() > 0) )   
    { 
    val9=Double.parseDouble(v9.getText().toString()); 
    val1=LgnToInch(val9);
    val5=LgnToM(val9);
    val6=LgnToY(val9);
    val2=LgnToCm(val9);
    val3=LgnToMl(val9);
    val4=LgnToKm(val9);
    val7=LgnToFt(val9);
    val8=LgnToLg(val9);
    val11=LgnTomm(val9);
    val12=LgnToNm(val9);

    }
    else if (v11.getText().length() > 0 && !(v2.getText().length() > 0) && !(v1.getText().length() > 0) && !(v3.getText().length() > 0) && !(v4.getText().length() > 0) && !(v5.getText().length() > 0)&& !(v6.getText().length() > 0)&& !(v7.getText().length() > 0)&& !(v8.getText().length() > 0)&& !(v9.getText().length() > 0)&& !(v12.getText().length() > 0) )   
    { 

    val11=Double.parseDouble(v11.getText().toString()); 
    val1=mmToInch(val11);
    val5=mmToM(val11);
    val6=mmToY(val11);
    val2=mmToCm(val11);
    val3=mmToMl(val11);
    val4=mmToKm(val11);
    val7=mmToFt(val11);
    val8=mmToLg(val11);
    val9=mmToLgn(val11);
    val12=mmToNm(val11);

    }
    else if (v12.getText().length() > 0 && !(v2.getText().length() > 0) && !(v1.getText().length() > 0) && !(v3.getText().length() > 0) && !(v4.getText().length() > 0) && !(v5.getText().length() > 0)&& !(v6.getText().length() > 0)&& !(v7.getText().length() > 0)&& !(v8.getText().length() > 0)&& !(v9.getText().length() > 0)&& !(v11.getText().length() > 0) )   
    { 
    val12=Double.parseDouble(v12.getText().toString()); 
    val1=NmToInch(val12);
    val5=NmToM(val12);
    val6=NmToY(val12);
    val2=NmToCm(val12);
    val3=NmToMl(val12);
    val4=NmToKm(val12);
    val7=NmToFt(val12);
    val8=NmToLg(val12);
    val9=NmToLgn(val12);
    val11=NmTomm(val12);

    }


    else 
    Toast.makeText(this,"please enter a value",Toast.LENGTH_LONG).show(); 
    v1. setText(Double.toString(val1)); 
    v2. setText(Double.toString(val2)); 
    v3. setText(Double.toString(val3)); 
    v4. setText(Double.toString(val4)); 
    v5. setText(Double.toString(val5)); 
    v6. setText(Double.toString(val6)); 
    v7. setText(Double.toString(val7)); 
    v8. setText(Double.toString(val8));
    v9. setText(Double.toString(val9)); 
    v11. setText(Double.toString(val11)); 
    v12. setText(Double.toString(val12)); 

    } 
    double InchToCm(double val) 
    {return(val*2.54);} 
    double InchToMl(double val) 
    {return(val*1.57828e-5);} 
    double InchToM(double val) 
    {return(val*0.0254);}
    double InchToKm(double val) 
    {return(val*0.0000254);} 
    double InchToY(double val) 
    {return(val*0.027777777778 );}
    double InchToFt(double val) 
    {return(val*0.083333333333);}
    double InchToLg(double val) 
    {return(val*0.0000052609321912);}
    double InchToLgn(double val) 
    {return(val*0.0000045716342693);}
    double InchTomm(double val) 
    {return(val* 25.4 );}
    double InchToNm(double val) 
    {return(val*1.37149e-5);}



    double CmToInch(double val) 
    {return(val/2.54);} 
    double CmToMl(double val) 
    {return(val*6.21371e-6);} 
    double CmToFt(double val) 
    {return(val*0.03280839895);} 
    double CmToM(double val) 
    {return(val*0.01);} 
    double CmToY(double val) 
    {return(val*0.010936132983);} 
    double CmToLg(double val) 
    {return(val* 0.0000020712331461);} 
    double CmToLgn(double val) 
    {return(val* 0.0000017998560115);} 
    double CmToKm(double val) 
    {return(val*1.0e-5);} 
    double CmTomm(double val) 
    {return(val*10);} 
    double CmToNm(double val) 
    {return(val*5.3996e-6);} 







    double MlToCm(double val) 
    {return(val*160934);}
    double MlToInch(double val) 
    {return(val*63360);}
    double MlToLg(double val) 
    {return(val*0.33333266363);}
    double MlToY(double val) 
    {return(val*1760);}
    double MlToKm(double val) 
    {return(val*1.60934);}
    double MlToLgn(double val) 
    {return(val*0.2896587473);}
    double MlToFt(double val) 
    {return(val*5280);}
    double MlToM(double val) 
    {return(val*1609.344);}
    double MlTomm(double val) 
    {return(val*1.609e+6);}
    double MlToNm(double val) 
    {return(val*0.868976);}






    double KmToCm(double val) 
    {return(val*100000);}
    double KmToInch(double val) 
    {return(val*39370.1);}
    double KmToMl(double val) 
    {return(val*0.621371);}
    double KmToFt(double val) 
    {return(val*3280.839895);}
    double KmToY(double val) 
    {return(val*1093.6132983);}
    double KmToM(double val) 
    {return(val*1000);}
    double KmToLg(double val) 
    {return(val*0.20712331461 );}
    double KmToLgn(double val) 
    {return(val*0.17998560115);}
    double KmTomm(double val) 
    {return(val*1e+6);}
    double KmToNm(double val) 
    {return(val*0.539957);}



    double MToCm(double val) 
    {return(val*100);}
    double MToInch(double val) 
    {return(val*39.37007874);}
    double MToMl(double val) 
    {return(val*0.00062137119224);}
    double MToFt(double val) 
    {return(val*3.280839895);}
    double MToY(double val) 
    {return(val*1.0936132983);}
    double MToLg(double val) 
    {return(val*0.00020712331461 );}
    double MToLgn(double val) 
    {return(val* 0.00017998560115);}
    double MToKm(double val) 
    {return(val* 0.001);}
    double MTomm(double val) 
    {return(val*1000);}
    double MToNm(double val) 
    {return(val*0.000539957);}




    double YToCm(double val) 
    {return(val*91.44);}
    double YToInch(double val) 
    {return(val*36);}
    double YToMl(double val) 
    {return(val*0.00056818181818);}
    double YToFt(double val) 
    {return(val*3);}
    double YToY(double val) 
    {return(val*1.0936132983);}
    double YToLg(double val) 
    {return(val* 0.00018939355888 );}
    double YToLgn(double val) 
    {return(val* 0.00016457883369 );}
    double YToKm(double val) 
    {return(val*0.0009144);}
    double YToM(double val) 
    {return(val*0.9144 );}
    double YTomm(double val) 
    {return(val*914.4 );}
    double YToNm(double val) 
    {return(val*0.000493737 );}


    double FtToCm(double val) 
    {return(val*30.48);}
    double FtToInch(double val) 
    {return(val*12);}
    double FtToMl(double val) 
    {return(val*0.00018939393939);}
    double FtToY(double val) 
    {return(val* 0.33333333333);}
    double FtToLg(double val) 
    {return(val* 0.000063131186294 );}
    double FtToLgn(double val) 
    {return(val*0.000054859611231 );}
    double FtToKm(double val) 
    {return(val* 0.0003048);}
    double FtToM(double val) 
    {return(val*0.3048 );}
    double FtTomm(double val) 
    {return(val*304.8 );}
    double FtToNm(double val) 
    {return(val*0.000164579 );}


    double LgToCm(double val) 
    {return(val*482804.17);}
    double LgToInch(double val) 
    {return(val*190080.38189);}
    double LgToMl(double val) 
    {return(val*3.0000060273);}
    double LgToY(double val) 
    {return(val* 5280.010608);}
    double LgToLgn(double val) 
    {return(val*0.86897798776 );}
    double LgToKm(double val) 
    {return(val*4.8280417);}
    double LgToM(double val) 
    {return(val*4828.0417  );}
    double LgToFt(double val) 
    {return(val* 15840.031824);}
    double LgTomm(double val) 
    {return(val* 4828041.7);}
    double LgToNm(double val) 
    {return(val* 3);}


    double LgnToCm(double val) 
    {return(val*555600);}
    double LgnToInch(double val) 
    {return(val*218740.15748);}
    double LgnToMl(double val) 
    {return(val*3.4523383441);}
    double LgnToY(double val) 
    {return(val* 6076.1154856 );}
    double LgnToLgn(double val) 
    {return(val*0.86897798776 );}
    double LgnToKm(double val) 
    {return(val*5.556 );}
    double LgnToM(double val) 
    {return(val*5556  );}
    double LgnToFt(double val) 
    {return(val*18228.346457);}
    double LgnToLg(double val) 
    {return(val*1.150777136 );}
    double LgnTomm(double val) 
    {return(val*5.5560e+6 );}
    double LgnToNm(double val) 
    {return(val*3 );}

    double mmToCm(double val) 
    {return(val*0.1);}
    double mmToInch(double val) 
    {return(val*0.03937007874);}
    double mmToMl(double val) 
    {return(val*6.2137119224e-7);}
    double mmToY(double val) 
    {return(val* 0.0010936132983);}
    double mmToLgn(double val) 
    {return(val*1.7998560115e-7  );}
    double mmToKm(double val) 
    {return(val*0.000001);}
    double mmToM(double val) 
    {return(val*0.001 );}
    double mmToFt(double val) 
    {return(val* 0.003280839895 );}
    double mmToLg(double val) 
    {return(val*2.0712331461e-7 );}
    double mmToNm(double val) 
    {return(val*5.3996e-7 );}


    double NmToCm(double val) 
    {return(val*185200);}
    double NmToInch(double val) 
    {return(val*72913.4);}
    double NmToMl(double val) 
    {return(val*1.15078);}
    double NmToY(double val) 
    {return(val*2025.37);}
    double NmToLgn(double val) 
    {return(val*0.333333333  );}
    double NmToKm(double val) 
    {return(val*1.852);}
    double NmToM(double val) 
    {return(val*1852 );}
    double NmToFt(double val) 
    {return(val*6076.12 );}
    double NmToLg(double val) 
    {return(val*0.333333333 );}
    double NmTomm(double val) 
    {return(val*1.852e+6);}


    void reset() 
    { 
    v1.setText(""); 
    v2.setText(""); 
    v3.setText(""); 
    v4.setText(""); 
    v5.setText(""); 
    v6.setText(""); 
    v7.setText(""); 
    v8.setText(""); 
    v9.setText("");
    v12.setText("");
    v11.setText("");
    }

    } `
备选方案

将android键盘上的enter按钮更改为Go或Search按钮

例如,谷歌搜索

xml代码

<EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:imeOptions="actionSearch"
        android:inputType="text" >

您可以使用文本更改事件

txtCM = (TextView) findViewById(R.id.txtCM);
txtMM = (TextView) findViewById(R.id.txtMM);
txtCM.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            Float cm = Float.parseFloat(txtCM.getText().toString());
            Float mm = cm / 10;
            txtMM.setText("" + mm);
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

并用其中一种方法编写代码。上面的示例。将厘米转换为毫米。

请删除此处的大部分代码。仔细想想哪些代码与您的问题真正相关。您不必显示所有12个
EditText
s和周围的所有代码。谢谢,它起作用了,但是如果我也要为EditText2执行该操作呢..我对v2尝试了相同的方法,但在setText行上出现堆栈溢出错误。请检查EditText名称,以及您传递给它的值。我在5-6个编辑文本中使用相同的代码。如果不起作用,创建新问题并在此处发布链接
txtCM = (TextView) findViewById(R.id.txtCM);
txtMM = (TextView) findViewById(R.id.txtMM);
txtCM.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            Float cm = Float.parseFloat(txtCM.getText().toString());
            Float mm = cm / 10;
            txtMM.setText("" + mm);
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });