Quello che contesto posso utilizzare per una nuova finestra di dialogo?
-
28-09-2019 - |
Domanda
ho bisogno di una finestra di dialogo personalizzata a comparire su premere il pulsante. Ecco il mio codice:
Button button3 = (Button) findViewById(R.id.Button03);
button3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final Dialog custdialog = new Dialog(this);
custdialog.setContentView(R.layout.custom_drink);
custdialog.setTitle("Custom Drink");
custdialog.setCancelable(false);
/etc.
Tuttavia, su questa linea: finale custdialog Dialog = nuova finestra di dialogo (this);
ottengo un errore che dice "Il costruttore di dialogo (nuova View.OnClickListener () {}) non è definita".
Ho provato sostituendo "presente" con l'altro, ma senza fortuna. E 'strano che io ottenere un errore su questa linea perché ho la stessa cosa (tranne diversi nomi e cose) nel mio progetto, sotto un interruttore (in questo modo:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.settings:
final Dialog settingsdialog = new Dialog(this);
settingsdialog.setContentView(R.layout.custom_dialog);
settingsdialog.setTitle("Settings");
settingsdialog.setCancelable(false);
e che si lavora bene ... hmmm.
Soluzione
In primo luogo, sulla domanda effettiva, invece di this
, uso MyActivity.this
, dove MyActivity
è il nome della classe Activity
. Si sta tentando di utilizzare questo da una classe interna, ma l'oggetto vero e proprio è necessario è la classe esterna.
Inoltre, non usare mai getApplicationContext()
per gran parte del nulla, in particolare tutto ciò che riguarda l'interfaccia utente.