我在这个方法中遇到错误:“构造函数Object(EditText)未定义”
private void setupAlert()
{
Log.d(TAG, "setupAlert()");
LayoutInflater li = LayoutInflater.from(this);
View promptsView = li.inflate(R.layout.emaildialog, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setView(promptsView);
final EditText userInput = (EditText)promptsView.findViewById(R.id.editTxtEmailAddress);
alertDialogBuilder.setCancelable(false).setPositiveButton("OK", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
updatePref(userInput.getText().toString());
Log.d(MainActivity.TAG, "setupAlert: getPreference()=" + getPreference());
takeSnapNow();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.colour_selector);
Log.d(TAG, "onCreate: getPreference()=" + getPreference());
if (getPreference().equals("")) {
setupAlert();
takeSnapNow();
} else {
takeSnapNow();
}
}
private void takeSnapNow()
{
String fileName = "TempImage.jpg";
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
values.put(MediaStore.Images.Media.DESCRIPTION, "Captured by XYZ app");
imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
}
请建议解决此错误。
编辑:通过删除其他人建议的UserInput来纠正上述错误。但是仍然没有显示alertDialog。逻辑是最初在onCreate中检查sharedpref,如果没有找到,则调用setupAlert()方法从用户获取电子邮件ID。 有线索吗?更改了上述代码段中更新的代码。
答案 0 :(得分:1)
DialogInterface.OnClickListener
不会将EditText
作为构造函数参数,您不需要这样做!您可以使用userInput
而不将其传递给DialogInterface.OnClickListener
,只需按以下方式使用
alertDialogBuilder.setCancelable(false).setPositiveButton("OK", new DialogInterface.OnClickListener() {
答案 1 :(得分:0)
为什么使用“ new DialogInterface.OnClickListener(userInput)”?
只需使用新的DialogInterface.OnClickListener()
即可