如何允许非 activity 在 activity 上显示对话框?
How to allow a non-activity to display dialog on activity?
这个问题与过去提出的问题非常相似,但请耐心等待,因为它仍然是一个独特的问题。基本上,我有一个获得应用程序权限的 class,如果用户没有互联网 运行ning,那么当自动登录屏幕出现时,它会卡在加载中。所以我想做的是显示一条对话框消息,用户将单击“确定”关闭应用程序。对于对话,我需要上下文,而且我必须在主线程上 运行。我已经发布了代码的图像,因为我想向您展示 runOnUIThread
是红色的。这是我从 Android Studio
得到的错误
Cannot resolve method runOnUIThread.
这是我的
问题:由于某种原因,runOnUIThread
不可用。有没有人有反建议,或者我遇到这个问题的原因?
代码如下:
public void alert() {
new Thread()
{
public void run()
{
application.runOnUiThread(new Runnable() // application is the context of my current activity.
{
public void run() //I display my alert Dialog here.
{
AlertDialog build= new AlertDialog.Builder(application.getApplicationContext())
.setTitle("Error")
.setMessage("Sorry there seems to be a problem with the service. Please check to make sure you have a stable internet connection. ")
.setPositiveButton("Ok, I understand.", (dialog, which) -> System.exit(0))
.show();
build.setCancelable(false);
Button positive= build.getButton(DialogInterface.BUTTON_POSITIVE);
positive.setTextColor(application.getResources().getColor(R.color.buttonPrimaryColor));
positive.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
}
});
}
}.start();
以下是我过去是如何使用 Toast 的。
public void shortToast(String msg) {
Observable.just(msg)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(message -> {
Toast.makeText(application, message, Toast.LENGTH_SHORT).show();
});
}
// In the main method
shortToast("Sorry an error occured");
尝试在 UI 上使用 activity 到 运行,而不是应用程序
For some reason, runOnUIThread is not usable
您尝试调用的方法是 runOnUiThread()
。那是 Activity
上的一个方法。无论 application
是什么,它都不是 Activity
。
Does anyone have a counter proposal
将此代码移至 Activity
。通常,pop-ups(对话框、快餐栏等)应由 Activity
显示。而且只有Activity
才能显示Dialog
,比如AlertDialog
.
这个问题与过去提出的问题非常相似,但请耐心等待,因为它仍然是一个独特的问题。基本上,我有一个获得应用程序权限的 class,如果用户没有互联网 运行ning,那么当自动登录屏幕出现时,它会卡在加载中。所以我想做的是显示一条对话框消息,用户将单击“确定”关闭应用程序。对于对话,我需要上下文,而且我必须在主线程上 运行。我已经发布了代码的图像,因为我想向您展示 runOnUIThread
是红色的。这是我从 Android Studio
Cannot resolve method runOnUIThread.
这是我的
问题:由于某种原因,runOnUIThread
不可用。有没有人有反建议,或者我遇到这个问题的原因?
代码如下:
public void alert() {
new Thread()
{
public void run()
{
application.runOnUiThread(new Runnable() // application is the context of my current activity.
{
public void run() //I display my alert Dialog here.
{
AlertDialog build= new AlertDialog.Builder(application.getApplicationContext())
.setTitle("Error")
.setMessage("Sorry there seems to be a problem with the service. Please check to make sure you have a stable internet connection. ")
.setPositiveButton("Ok, I understand.", (dialog, which) -> System.exit(0))
.show();
build.setCancelable(false);
Button positive= build.getButton(DialogInterface.BUTTON_POSITIVE);
positive.setTextColor(application.getResources().getColor(R.color.buttonPrimaryColor));
positive.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
}
});
}
}.start();
以下是我过去是如何使用 Toast 的。
public void shortToast(String msg) {
Observable.just(msg)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(message -> {
Toast.makeText(application, message, Toast.LENGTH_SHORT).show();
});
}
// In the main method
shortToast("Sorry an error occured");
尝试在 UI 上使用 activity 到 运行,而不是应用程序
For some reason, runOnUIThread is not usable
您尝试调用的方法是 runOnUiThread()
。那是 Activity
上的一个方法。无论 application
是什么,它都不是 Activity
。
Does anyone have a counter proposal
将此代码移至 Activity
。通常,pop-ups(对话框、快餐栏等)应由 Activity
显示。而且只有Activity
才能显示Dialog
,比如AlertDialog
.