Welchen Zusammenhang kann ich für einen neuen Dialog verwenden?
-
28-09-2019 - |
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.
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.