Android изменить контекст для findViewById на супер из встроенного класса - PullRequest
1 голос
/ 12 марта 2010

Я пытаюсь получить значение EditText в диалоговом окне. В строке «*» в следующем коде safeNameEditText имеет значение null; я предполагаю, потому что 'findVeiwById' ищет в контексте 'AlertDialog.OnClickListener'; Как я могу получить / изменить контекст вызова 'findViewById'?

 protected Dialog onCreateDialog(int id) {
  AlertDialog.Builder builder = new AlertDialog.Builder(this);

  switch(id){
   case DIALOG_NEW_SAFE:
    builder.setTitle(R.string.news_safe);
    builder.setIcon(android.R.drawable.ic_menu_add);

    LayoutInflater factory = LayoutInflater.from(this); 
    View newSafeView = factory.inflate(R.layout.newsafe, null);

    builder.setView(newSafeView);
    builder.setPositiveButton(R.string.ok, new AlertDialog.OnClickListener(){
     public void onClick(DialogInterface dialog, int which) {
 *     EditText safeNameEditText = (EditText) findViewById(R.id.new_safe_name);
      String safeName = safeNameEditText.getText().toString();
      Log.i(LOG, safeName);
      setSafeDao(safeName);
     }     
    });

    builder.setNegativeButton(R.string.cancel, new AlertDialog.OnClickListener(){
     public void onClick(DialogInterface dialog, int which) {
      dialog.dismiss();
     } 
    });
    return(builder.create());
   default:
    return(null);
  }
 }

Ответы [ 2 ]

3 голосов
/ 12 марта 2010

Я думаю, вам нужно сослаться на представление, так как диалоговое окно не видит это поле edittext:

EditText safeNameEditText = (EditText) newSafeView.findViewById (R.id.new_safe_name);

0 голосов
/ 12 марта 2010

Не совсем ответ на ваш вопрос, но это поможет вам достичь того, что вы пытаетесь сделать ...

final EditText safeNameEditText = (EditText) findViewById(R.id.new_safe_name);
builder.setPositiveButton(R.string.ok, new AlertDialog.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
    String safeName = safeNameEditText.getText().toString();
    Log.i(LOG, safeName);
    setSafeDao(safeName);
}     
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...