【发布时间】:2016-10-08 10:37:30
【问题描述】:
我想用 2 个数字选择器制作计时器,让用户选择开始时间,并用 editText 输入计时器名称。我为此使用了自定义 AlterDialog。 我遇到的问题是将用户输入的 numberpickers 结果和名称传递回 MainActivity 字段。 在我尝试自己学习编码时,我应该感谢您的支持。 这是从 MainActivity 打开的 MyDialog.java。
LayoutInflater inflater;
View v;
NumberPicker hourPicker;
NumberPicker minPicker;
EditText enterdish;
TextView yourdishname;
@Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {
// TODO Auto-generated method stub
inflater = getActivity().getLayoutInflater();
v=inflater.inflate(R.layout.activity_dialog, null);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setView(v);
hourPicker = (NumberPicker) v.findViewById(R.id.picker1_hours);
hourPicker.setMaxValue(36);
hourPicker.setMinValue(0);
hourPicker.setWrapSelectorWheel(false);
hourPicker.setOnValueChangedListener( new NumberPicker.
OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int
oldVal, int newVal) {
}
});
hourPicker.setFormatter(new NumberPicker.Formatter() {
@Override
public String format(int i) {
return String.format("%02d", i);
}
});
minPicker = (NumberPicker) v.findViewById(R.id.picker2_minutes);
minPicker .setMaxValue(59);
minPicker .setMinValue(1);
minPicker .setWrapSelectorWheel(false);
minPicker .setOnValueChangedListener( new NumberPicker.
OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int
oldVal, int newVal) {
}
});
minPicker.setFormatter(new NumberPicker.Formatter() {
@Override
public String format(int i) {
return String.format("%02d", i);
}
});
builder.setView(v).setPositiveButton("OK", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
enterdish = (EditText) v.findViewById(R.id.editText1_dishname);
yourdishname = (TextView)v.findViewById(R.id.textView1_dishnamemain);
yourdishname.setText(enterdish.getText());
}
}).setNegativeButton("Cancel", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
return builder.create();
}
}
【问题讨论】:
-
你有什么错误吗?
-
只需将活动上下文传递给您的对话框类。使用该上下文调用从警报对话框接收数据的方法。
-
使用此代码没有错误,但没有任何反应。当我试图把例如。不幸的是,setText 或我能找到的任何解决方案大部分时间都会崩溃。
标签: android android-alertdialog numberpicker