Frage

Ich brauche einen benutzerdefinierten Dialog auf Tastendruck angezeigt werden. Hier ist mein Code:

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.

Doch auf dieser Linie: final Dialog custdialog = new Dialog (this);

Ich erhalte eine Fehlermeldung sagen: "Der Konstruktor Dialog (neu View.OnClickListener () {}) ist nicht definiert".

Ich habe versucht, „das“ mit anderen Dingen zu ersetzen, aber ohne Glück. Es ist seltsam, dass ich auf dieser Linie einen Fehler, weil ich genau die gleiche Sache (außer verschiedenen Namen und Sachen) in meinem Projekt haben, unter einem Schalter (wie folgt aus:

@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);

und dass man funktioniert gut ... hmmm.

War es hilfreich?

Lösung

Als erstes auf Ihre eigentliche Frage, statt this, Verwendung MyActivity.this, wo MyActivity der Name der Activity Klasse. Sie versuchen, diese von einer inneren Klasse zu verwenden, aber das eigentliche Objekt, das Sie brauchen, ist die äußere Klasse.

Auch nie getApplicationContext() für so gut wie nichts nutzt, vor allem etwas mit dem UI verwendet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top