您可以在输入内容后立即更改edittext
值吗?我希望我的输入和输出位于同一edittext
。我使用textwatcher
来获取输入并将其输出到同一edittext
。
package com.example.lathrix.textwatcher;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextWatcher mid = null;
EditText sat_amin = (EditText) findViewById(R.id.asd);
String satamin = sat_amin.getText().toString();
int satamln = satamin.length();
String last = satamin.substring(satamin.length() - 1);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mid = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
switch(satamln){
case 1:
sat_amin.setText("12:0" +satamin + " AM");
break;
case 2:
if (last == "p"){
sat_amin.setText("12:0" +satamin + " PM");
}else{
sat_amin.setText("12:" +satamin + " AM");
}
break;
default:
sat_amin.setText("");
break;
}
}
};
sat_amin.addTextChangedListener(mid);
}
}
正如您所看到的,该程序是为了方便时间编码,我希望它在输入后在同一edittext
输出解释时间。当我运行应用程序时,它只是崩溃。
答案 0 :(得分:0)
您的应用崩溃是因为afterTextChanged
一直在调用它,因为您更新了其中的editText
,请在插入此类内容之前尝试删除TextChangedListener
:
@Override
public void afterTextChanged(Editable editable) {
int satamln=5;
switch (satamln) {
case 1:
sat_amin.removeTextChangedListener(this);
sat_amin.setText("12:0" + satamin + " AM");
sat_amin.addTextChangedListener(this);
break;
case 2:
sat_amin.removeTextChangedListener(this);
if (last == "p") {
sat_amin.setText("12:0" + satamin + " PM");
} else {
sat_amin.setText("12:" + satamin + " AM");
}
sat_amin.addTextChangedListener(this);
break;
default:
sat_amin.removeTextChangedListener(this);
sat_amin.setText("");
sat_amin.addTextChangedListener(this);
break;
}
}
希望这有帮助