私の問題はに似ています.2年後に多くの変更があったため、同じ問題を投稿して更新された回答を得ました。アンドロイドで現在表示されているアクティビティのダイアログを表示するにはどうすればよいですか?
私はGingerBread +デバイス用のアプリを開発しています。私は多くのアクティビティを持っており、バックグラウンドではサーバーからデータを受信しています。今、そのデータに基づいて、私はDialog
をユーザーに示す必要があります。問題はどのように現在のフロントが最も活動しているかをどのように知るのですか?私が試した何
、 しかし私は働いていないこと、getApplicationContext()
Dialog
しばらく創造を与えて試してみました。例外を投げる
解決策はありますか? (私は本当にそれが嫌いです) 変数はApplication
クラスにあり、それを各アクティビティのonResume()
に設定することで、現在表示されているアクティビティを追跡できます。私は上のダイアログを表示するにはどうすればよい
、私の素朴な疑問がある
これを達成するために、よりスマートな方法は自分のしている場合、私は本当にこの簿記を行うにはしたくないと私はこれを達成するために、よりスマートな方法は自分のしている確信している、
現在表示されているアクティビティですか?、私はAlertDialog.Builderへの参照を与えることができるので、私は自分の仕事をすると思う.. トップアクティビティでダイアログを表示する方法は?編集、私は次のコード プライベートView.OnClickListener cancelClickListener =新しいOnClickListenerを(使用して簡単なダイアログを作成する)AlertDialog.Builder alertDialogBuilder =新しいAlertDialog.Builderを使用して、{
@Override
public void onClick(View v) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
LoginActivity.this);
// set title
alertDialogBuilder.setTitle("Roobroo will exit..");
// set dialog message
alertDialogBuilder
.setMessage("Are you sure you want to exit ?")
.setCancelable(false)
.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
// if this button is clicked, close
// current activity
LoginActivity.this.finish();
}
})
.setNegativeButton("No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
// if this button is clicked, just close
// the dialog box and do nothing
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
// TODO Write the code to exit from the app, (gracefull exit)
Log.i(LOG_CAT, "Cancel Button is clicked");
}
};
例外 ( getApplicationContext());
1.はtransparent theme and no title
とActivity
を作成します。例外下記の私に与え、それはあなたを助けている場合、
06-11 14:09:16.732: E/AndroidRuntime(1005): FATAL EXCEPTION: main
06-11 14:09:16.732: E/AndroidRuntime(1005): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
06-11 14:09:16.732: E/AndroidRuntime(1005): at android.view.ViewRoot.setView(ViewRoot.java:531)
06-11 14:09:16.732: E/AndroidRuntime(1005): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
06-11 14:09:16.732: E/AndroidRuntime(1005): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
06-11 14:09:16.732: E/AndroidRuntime(1005): at android.app.Dialog.show(Dialog.java:241)
06-11 14:09:16.732: E/AndroidRuntime(1005): at com.argusoft.roobrooAndroid.activities.LoginActivity$3.onClick(LoginActivity.java:127)
06-11 14:09:16.732: E/AndroidRuntime(1005): at android.view.View.performClick(View.java:2485)
06-11 14:09:16.732: E/AndroidRuntime(1005): at android.view.View$PerformClick.run(View.java:9080)
06-11 14:09:16.732: E/AndroidRuntime(1005): at android.os.Handler.handleCallback(Handler.java:587)
06-11 14:09:16.732: E/AndroidRuntime(1005): at android.os.Handler.dispatchMessage(Handler.java:92)
06-11 14:09:16.732: E/AndroidRuntime(1005): at android.os.Looper.loop(Looper.java:123)
06-11 14:09:16.732: E/AndroidRuntime(1005): at android.app.ActivityThread.main(ActivityThread.java:3683)
06-11 14:09:16.732: E/AndroidRuntime(1005): at java.lang.reflect.Method.invokeNative(Native Method)
06-11 14:09:16.732: E/AndroidRuntime(1005): at java.lang.reflect.Method.invoke(Method.java:507)
06-11 14:09:16.732: E/AndroidRuntime(1005): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-11 14:09:16.732: E/AndroidRuntime(1005): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-11 14:09:16.732: E/AndroidRuntime(1005): at dalvik.system.NativeStart.main(Native Method)
getApplicationContext()の例外は何ですか? –
いくつかのコードを表示してください。今まで何をしてきたのですか? – Dhruvisha
さて、透明な余分なアクティビティを持ってきて、そのアクティビティのダイアログを表示することができます。アクティビティのダイアログのすべてのコードを書きます。 – Rasel