java – Get an EditText value from a layout passed as a parameter to an AlertDialog.Builder when the button is clicked?

Question:

I use LayoutInflater in my view – View view = li.inflate(R.layout.alertdialog, null); I created an AlertDialog.Builder builder setting for it the view, and the positive and negative buttons. My Layout has an EditText and I want to get the EditText value after clicking the positive button. I use an EditText variable to retrieve the EditText reference from the Layout with the R.id.edtText, even so, using the log its value is null. How do I get the value of EditText in this case?

LayoutInflater li = getLayoutInflater();

    View view = li.inflate(R.layout.alertdialog, null);
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Criando novo arquivo de apresentação");
    builder.setView(view);

    builder.setPositiveButton("Criar",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    nomeArquivo = (EditText) findViewById(R.id.nomeArquivo);
                    String temp = diretorio + nomeArquivo.getText().toString() + ".cron";

This part of the code gives an error and terminates my application. – nomeArquivo.getText().toString()

xml

<?xml version="1.0" encoding="utf-8"?>

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:src="@drawable/arquivoicon" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="38dp"
    android:layout_gravity="center"
    android:gravity="center"
    android:text="Nome do arquivo:"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<EditText
    android:id="@+id/nomeArquivo"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10"
    android:gravity="center"
    android:text="teste" >

    <requestFocus />
</EditText>

Answer:

You are using the Activity 's findViewById .

You have to use the findViewById 's findViewById: dialog.findViewById(R.id.nomeArquivo);

LayoutInflater li = getLayoutInflater();

    View view = li.inflate(R.layout.alertdialog, null);
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Criando novo arquivo de apresentação");
    builder.setView(view);

    builder.setPositiveButton("Criar",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    nomeArquivo = (EditText) ((Dialog) dialog).findViewById(R.id.nomeArquivo);
                    String temp = diretorio + nomeArquivo.getText().toString() + ".cron";
Scroll to Top