需要在不同的活动中显示 popup/Dialog
Need to show a popup/Dialog on different activities
我有一个使用三个活动的应用程序。我在第一个中创建了一个线程,用于检查与服务器的连接,当应用程序无法连接到服务器时,它会显示一个弹出窗口。
问题是,当我从 Activity1 转到 Activity2 并且失去连接时,我得到一个 WindowManager$BadTokenException。
我试过使用 PopupWindow 和 AlertDialog 但我遇到了同样的问题,我不能给他们当前的 Activity。
警报对话框:
AlertDialog.Builder builder1 = new AlertDialog.Builder(getApplicationContext());
builder1.setMessage("Se ha hecho el cierre diario, es necesario reiniciar la aplicación.");
builder1.setCancelable(true);
builder1.setPositiveButton("Ok",
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
java.lang.System.exit(0);
}
});
AlertDialog alert11 = builder1.create();
alert11.show();
弹出窗口:
final Activity context = Activity_Start.this;
final boolean Reset = reset;
// Inflate the popup_layout.xml
LinearLayout viewGroup = (LinearLayout) context.findViewById(R.id.popup_mensaje_error);
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View popup_error = layoutInflater.inflate(R.layout.mensaje_error, viewGroup, false);
// Creating the PopupWindow
final PopupWindow popupW_error = new PopupWindow(context);
popupW_error.setContentView(popup_error);
在这两种情况下,我都遇到了同样的错误,而且我几乎 100% 确定这是因为 getApplicationContext() 不足以获取应用程序所需的内容。
有人可以帮助我吗?谢谢!!
Android 文档建议使用 getApplicationContext();
但在实例化 AlertDialog.Builder 或 AlertDialog 或 Dialog 时使用当前的 activity 将无法正常工作...
尝试
AlertDialog.Builder builder1 = new AlertDialog.Builder(Activity_Start.this);
而不是
AlertDialog.Builder builder1 = new AlertDialog.Builder(getApplicationContext());
也用
final Context context = Activity_Start.this;
而不是
final Activity context = Activity_Start.this;
对话框与这个特定的 activity 关联,而不是整个应用程序。创建作用域仅为activity的对象时,一般使用Activity.this。在创建范围超出当前 activity.
的对象时使用应用程序上下文
希望对您有所帮助!
我有一个使用三个活动的应用程序。我在第一个中创建了一个线程,用于检查与服务器的连接,当应用程序无法连接到服务器时,它会显示一个弹出窗口。
问题是,当我从 Activity1 转到 Activity2 并且失去连接时,我得到一个 WindowManager$BadTokenException。
我试过使用 PopupWindow 和 AlertDialog 但我遇到了同样的问题,我不能给他们当前的 Activity。
警报对话框:
AlertDialog.Builder builder1 = new AlertDialog.Builder(getApplicationContext());
builder1.setMessage("Se ha hecho el cierre diario, es necesario reiniciar la aplicación.");
builder1.setCancelable(true);
builder1.setPositiveButton("Ok",
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
java.lang.System.exit(0);
}
});
AlertDialog alert11 = builder1.create();
alert11.show();
弹出窗口:
final Activity context = Activity_Start.this;
final boolean Reset = reset;
// Inflate the popup_layout.xml
LinearLayout viewGroup = (LinearLayout) context.findViewById(R.id.popup_mensaje_error);
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View popup_error = layoutInflater.inflate(R.layout.mensaje_error, viewGroup, false);
// Creating the PopupWindow
final PopupWindow popupW_error = new PopupWindow(context);
popupW_error.setContentView(popup_error);
在这两种情况下,我都遇到了同样的错误,而且我几乎 100% 确定这是因为 getApplicationContext() 不足以获取应用程序所需的内容。
有人可以帮助我吗?谢谢!!
Android 文档建议使用 getApplicationContext();
但在实例化 AlertDialog.Builder 或 AlertDialog 或 Dialog 时使用当前的 activity 将无法正常工作...
尝试
AlertDialog.Builder builder1 = new AlertDialog.Builder(Activity_Start.this);
而不是
AlertDialog.Builder builder1 = new AlertDialog.Builder(getApplicationContext());
也用
final Context context = Activity_Start.this;
而不是
final Activity context = Activity_Start.this;
对话框与这个特定的 activity 关联,而不是整个应用程序。创建作用域仅为activity的对象时,一般使用Activity.this。在创建范围超出当前 activity.
的对象时使用应用程序上下文希望对您有所帮助!