我有一个应用程序,我想调用一个用数字输入打开对话框的方法,我的问题是,每当将值插入EditText并按下正面按钮它返回零,然后首先在下一个呼叫上的值。
通过调试,我发现它创建了元素,然后返回后来跳过了我的作业语句。
如何防止它返回太早?
private String numbers;
private String getWeight(){
final EditText edittext = new EditText(this);
edittext.setInputType(InputType.TYPE_CLASS_PHONE);
AlertDialog.Builder builder1 = new AlertDialog.Builder(this);
builder1.setMessage("How much do you weigh?");
builder1.setView(edittext);
builder1.setCancelable(true);
builder1.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
numbers = edittext.getText().toString();
dialog.cancel();
}
});
builder1.setNeutralButton(
"Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
numbers = edittext.getText().toString();
dialog.cancel();
}
});
AlertDialog alert11 = builder1.create();
alert11.show();
return numbers;
}
因此,在键入时将EditText内容放在字符串中。
String content;
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
content = s.toString();
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
if(TextUtils.isEmpty(s)) {
// call method
}
}
});
和setPositiveButton在这里获取内容字符串。
我也有同样的问题,并使用以下方法修复了它。
您应该为视图创建静态XML布局。不要以编程方式构建它。
更新您的代码
private String numbers;
private String getWeight(){
LayoutInflater inflater = LayoutInflater.from(mContext);
View mView = inflater.inflate(R.layout.weight_simple_input, null);
builder.setView(mView);
AlertDialog.Builder builder1 = new AlertDialog.Builder(this);
builder1.setMessage("How much do you weigh?");
builder1.setView(mView);
builder1.setCancelable(true);
builder1.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
numbers = ((EditText) mView.findViewById(R.id.phone)).getText().toString();
dialog.cancel();
}
});
builder1.setNeutralButton(
"Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
numbers = edittext.getText().toString();
dialog.cancel();
}
});
AlertDialog alert11 = builder1.create();
alert11.show();
}
,虽然您在类范围中定义了数字,但您无需再次返回。在您想要的任何地方使用它。
最后,这是layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:layout_width="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="@dimen/text_margin"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:ems="10"
android:id="@+id/weight" />
</LinearLayout>