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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top