Ich möchte einen Scheduler einrichten und nach einer vordefinierten Zeit ein Popup anzeigen.Wie zeige ich AlertDialog von ScheduledExecutor an?
Im folgenden Beispiel wird das Protokoll "geplante Warnung" einmal gedruckt, aber das Warndialogfeld wird nie angezeigt.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
//...
initAlert(this);
}
private void initAlert(Activity activity) {
final ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);
executor.schedule(new Runnable() {
@Override
public void run() {
Log.i("app", "scheduled alert");
new AlertDialog.Builder(activity)
.setTitle("test")
.setMessage("lorep")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Log.i("app", "ok clicked");
}
})
.setIcon(android.R.drawable.ic_dialog_alert)
.create()
.show();
}
}, 10, TimeUnit.SECONDS);
}
}
Die Initialisierung befindet sich in der Hauptaktivität.
Warum wird der Dialog nicht angezeigt?
Wenn ich eine Schaltfläche zu meiner Ansicht hinzufüge und den Warndialog explizit mit dieser Schaltfläche verknüpfe, funktioniert es. Daher sollte der Dialogcode im Allgemeinen in Ordnung sein.
Kompilieren wirklich? Ist das 'this' in' newAlertDialog.Builder (this) 'die Instanz von Runnable? – lelloman
Versuchen Sie, in Aktivität Alarm anzuzeigen. RunOnUiThread –
@lelloman ja. Dies kompiliert nicht –