私はスケジューラを設定して、あらかじめ定義された時間の後にポップアップを表示したいと思います。ScheduledExecutorからAlertDialogを表示するには?
次の例では、「スケジュールされたアラート」ログが1回印刷されますが、アラートダイアログは表示されません。
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);
}
}
初期化はメインアクティビティの内部にあります。
なぜダイアログが表示されないのですか?
ボタンを自分のビューに追加し、そのボタンに明示的な警告ダイアログをリンクすると、それは機能します。だから、一般的にダイアログコードはうまくいくはずです。
本当にコンパイルできますか?新しいAlertDialog.Builder(this) 'Runnableのインスタンスの' this'をins'tしますか? – lelloman
activity.runOnUiThread –
のアラートを表示するようにしてください。これはコンパイルされません。 –