2015-08-17 1 views
1

Я пытаюсь создать диалоговое окно предупреждения, но в скобках в объявлении, на линии, где он говорит:, когда использовать это или контекст с оповещения Диалог

AlertDialog.Builder alertDialog=new AlertDialog.Builder(this).create(); 

(это) приводит к ошибкам. Я попытался изменить его на контекст, еще больше ошибок. ПОМОГИТЕ?

import android.app.Activity; 
import android.app.AlertDialog.Builder; 
import android.content.DialogInterface; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.app.AlertDialog; 

public class userPreferences extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.userpreferences); 
    EditText editText=(EditText)findViewById(R.id.editText); 
    Button save=(Button)findViewById(R.id.button); 


    save.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      AlertDialog.Builder alertDialog=new AlertDialog.Builder(this).create(); 
        alertDialog.setTitle("Alert Dialog"); 
        alertDialog.setMessage("Are you sure you want to save?"); 
        alertDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 

         } 
        }); 
        alertDialog.setNegativeButton("No", null); 
        alertDialog.show(); 


     } 
    }); 

} 
} 

ответ

0

Создать построитель внешнего метода OnClick

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.userpreferences); 
    EditText editText=(EditText)findViewById(R.id.editText); 
    Button save=(Button)findViewById(R.id.button); 

    final AlertDialog.Builder alertDialog=new AlertDialog.Builder(this).create(); 

    save.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 

       alertDialog.setTitle("Alert Dialog"); 
       alertDialog.setMessage("Are you sure you want to save?"); 
       alertDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 

        } 
       }); 
       alertDialog.setNegativeButton("No", null); 
       alertDialog.show(); 
    } 
    }); 
} 
+0

он все еще дает ту же ошибку – droidnoob

+0

@droidnoob может вы отправляете логарифм? –

+0

кто-то помог мне! я должен был объявить его окончательным, и он удалил все ошибки. Спасибо! – droidnoob

1

this является ссылкой на запущенные в данный момент, например. Вы можете использовать , чтобы передать свою деятельность (которая наследуется от Context, поэтому мы можем передать Activity ссылку на параметр Context) на AlertDialog.Builder, если он находится вне слушателя.

При определении анонимный внутренний класс, как:

new View.OnClickListener() { ... }

В this эталонные изменения экземпляра OnClickListener.

AlertDialog.Builder() ожидает Context, хотя! Поскольку это анонимный внутренний класс, мы можем просто использовать userPreferences.this (потому что userPreferences все еще в области), чтобы получить правильную ссылку.

+0

Мне понравилось, что вы сказали, и он все еще дает ошибку – droidnoob

+0

'AlertDialog.Builder alertDialog = new AlertDialog.Builder (userPreferences.this) .create();' дает ошибку? – MeetTitan

+0

он изменил ошибку с одного слова на всю строку, говорит, что мне нужен диалоговый построитель предупреждений, но похоже, что он находит диалоговое окно оповещений – droidnoob

2

alertDialog должен быть объявлен как finalвнеOnClickListener:

final AlertDialog.Builder alertDialog = new AlertDialog.Builder(this); 

save.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 

     alertDialog.setTitle("Alert Dialog"); 
     alertDialog.setMessage("Are you sure you want to save?"); 
     alertDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       ... 
      } 
     }); 
     alertDialog.setNegativeButton("No", null); 
     alertDialog.show(); 
    } 
}); 

Надеется, что это помогает.

+0

да! он полностью удалил ошибку! Спасибо! – droidnoob

1

Это внутри храповой слушателя будут ссылаться на замковый слушатель

save.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
        AlertDialog.Builder alertDialog=new AlertDialog.Builder(userPrefereces.this).create(); 
        alertDialog.setTitle("Alert Dialog"); 
        alertDialog.setMessage("Are you sure you want to save?"); 
        alertDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 

         } 
        }); 
        alertDialog.setNegativeButton("No", null); 
        alertDialog.show(); 


     } 
    }); 

но вы можете получить контекст деятельности по

userPreferences.this