2015-07-01 2 views
0

Я новичок в android. Мне нужно получить значение editText's, чтобы найти что-то. Но когда я запускаю программу, ошибка возникает как null pointer exception.Получить значение editText from alertDialog builder

"EditText etSearch" не получает текст.

Пожалуйста, помогите мне. Спасибо.

public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_search) { 
      AlertDialog.Builder builder = new AlertDialog.Builder(
        MainActivity.this); 
      // Get the layout inflater 
      LayoutInflater inflater = MainActivity.this.getLayoutInflater(); 

      // Inflate and set the layout for the dialog 
      // Pass null as the parent view because its going in the dialog 
      // layout 
      builder.setView(inflater.inflate(R.layout.dialog_save, null)) 

        // Add action buttons 
        .setPositiveButton("Search", 
          new DialogInterface.OnClickListener() { 
           @Override 
           public void onClick(DialogInterface dialog, 
             int id) { 
            final EditText etSearch = (EditText) findViewById(R.id.etSearchText); 
            mSearchText = etSearch.getText().toString(); 

           } 
          }) 
        .setNegativeButton("Cancel", 
          new DialogInterface.OnClickListener() { 
           public void onClick(DialogInterface dialog, 
             int id) { 
            dialog.cancel(); 
           } 
          }); 
      // return builder.create(); 
      AlertDialog alertDialog = builder.create(); 
      alertDialog.show(); 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 

ответ

0

Для зрения находки из Diloag, то вы должны дать референс этого ввиду диалога.

LayoutInflater inflater = MainActivity.this.getLayoutInflater(); 
      View mView = inflater.inflate(R.layout.dialog_save, null); 
      final EditText etSearch = (EditText)mView.findViewById(R.id.etSearchText); 
      builder.setView(mView) 

Полный код:

public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_search) { 
      AlertDialog.Builder builder = new AlertDialog.Builder(
        MainActivity.this); 
      // Get the layout inflater 
      LayoutInflater inflater = MainActivity.this.getLayoutInflater(); 
      View mView = inflater.inflate(R.layout.dialog_save, null); 
      final EditText etSearch = (EditText)mView.findViewById(R.id.etSearchText); 
      builder.setView(mView) 

        // Add action buttons 
        .setPositiveButton("Search", 
          new DialogInterface.OnClickListener() { 
           @Override 
           public void onClick(DialogInterface dialog, 
             int id) { 

            mSearchText = etSearch.getText().toString(); 

           } 
          }) 
        .setNegativeButton("Cancel", 
          new DialogInterface.OnClickListener() { 
           public void onClick(DialogInterface dialog, 
             int id) { 
            dialog.cancel(); 
           } 
          }); 
      // return builder.create(); 
      AlertDialog alertDialog = builder.create(); 
      alertDialog.show(); 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
+0

Отлично. Это сработало. благодаря –

1

Заменить этот код:

final EditText etSearch = (EditText) findViewById(R.id.etSearchText); 

с

final EditText etSearch = (EditText)dialog. findViewById(R.id.etSearchText); 
0

Посмотреть V = inflater.inflate (R.layout.dialog_save, нуль); builder.setView (v)

   // Add action buttons 
       .setPositiveButton("Search", 
         new DialogInterface.OnClickListener() { 
          @Override 
          public void onClick(DialogInterface dialog, 
            int id) { 
           final EditText etSearch = (EditText) v.findViewById(R.id.etSearchText); 
           mSearchText = etSearch.getText().toString(); 

          } 
         }) 
       .setNegativeButton("Cancel", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, 
            int id) { 
           dialog.cancel(); 
          } 
         }); 
Смежные вопросы