AlertDialog.Конструктор с пользовательским макетом и EditText; не удается получить доступ к представлению
Я пытаюсь создать диалог оповещения с
7 ответов:
editText
является частьюalertDialog
макет так просто открытьeditText
со ссылкой наalertDialog
EditText editText = (EditText) alertDialog.findViewById(R.id.label_field);
обновление:
потому что в соответствии кода
dialogBuilder.setView(inflater.inflate(R.layout.alert_label_editor, null));
inflater
и Null.обновите свой код, как показано ниже, и попытайтесь понять каждую строку кода
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); // ...Irrelevant code for customizing the buttons and title LayoutInflater inflater = this.getLayoutInflater(); View dialogView = inflater.inflate(R.layout.alert_label_editor, null); dialogBuilder.setView(dialogView); EditText editText = (EditText) dialogView.findViewById(R.id.label_field); editText.setText("test label"); AlertDialog alertDialog = dialogBuilder.create(); alertDialog.show();
этот
AlertDialog.Builder builder = new AlertDialog.Builder(activity); // Get the layout inflater LayoutInflater inflater = (activity).getLayoutInflater(); // Inflate and set the layout for the dialog // Pass null as the parent view because its going in the // dialog layout builder.setTitle(title); builder.setCancelable(false); builder.setIcon(R.drawable.galleryalart); builder.setView(inflater.inflate(R.layout.dialogue, null)) // Add action buttons .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { } } }); builder.create(); builder.show();
вы можете написать:
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); // ...Irrelevant code for customizing the buttons and title LayoutInflater inflater = this.getLayoutInflater(); View dialogView= inflater.inflate(R.layout.alert_label_editor, null); dialogBuilder.setView(dialogView); Button button = (Button)dialogView.findViewById(R.id.btnName); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //Commond here...... } }); EditText editText = (EditText) dialogView.findViewById(R.id.label_field); editText.setText("test label"); dialogBuilder.create().show();
изменить это:
EditText editText = (EditText) findViewById(R.id.label_field);
для этого:
EditText editText = (EditText) v.findViewById(R.id.label_field);
View v=inflater.inflate(R.layout.alert_label_editor, null); alertDialog.setContentView(v); EditText editText = (EditText)v.findViewById(R.id.label_field); editText.setText("test label"); alertDialog.show();
/** * Shows confirmation dialog about signing in. */ private void startAuthDialog() { AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); AlertDialog alertDialog = dialogBuilder.create(); alertDialog.show(); alertDialog.getWindow().setLayout(800, 1400); LayoutInflater inflater = this.getLayoutInflater(); View dialogView = inflater.inflate(R.layout.auth_dialog, null); alertDialog.getWindow().setContentView(dialogView); EditText editText = (EditText) dialogView.findViewById(R.id.label_field); editText.setText("test label"); }
в случае, если кто-то хочет его в Котлин :
val dialogBuilder = AlertDialog.Builder(this) // ...Irrelevant code for customizing the buttons and title val dialogView = layoutInflater.inflate(R.layout.alert_label_editor, null) dialogBuilder.setView(dialogView) val editText = dialogView.findViewById(R.id.label_field) editText.setText("test label") val alertDialog = dialogBuilder.create() alertDialog.show()
Reposted @user370305 это!--5--> ответ.