【问题标题】:Android - not an enclosing classAndroid - 不是封闭类
【发布时间】:2016-04-04 07:02:42
【问题描述】:

我知道有人问过这个问题,但我无法解决。我想在 Android 的服务上显示简单的 AlertDialog。我可以在 MainActivity 上很好地展示它,但我在 Service 上遇到了问题,这是我的代码:

CustomMainActivity.java:

public void popupDialogMain()
{
    final Context context = getApplicationContext();
    Handler h1 = new Handler(context.getMainLooper());
    h1.post(new Runnable() {
        @Override
        public void run() {
            if (mBXmpp)
                mBXmppService.popupDialogMain2();
        }
    });
}

XmppService.java:

public static void popupDialogMain2()
{
    AlertDialog.Builder builder = new AlertDialog.Builder(CustomMainActivity.this)
           .setMessage("Look at this dialog!")
           .setCancelable(true)
           .setPositiveButton("OK", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                    //do things
               }
           });
     AlertDialog alert = builder.create();
     builder.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
     alert.show();
}

我在这一行得到一个错误: AlertDialog.Builder builder = new AlertDialog.Builder(CustomMainActivity.this)

Android 清单: 我添加了这个权限:

android.permission.SYSTEM_ALERT_WINDOW

我得到这个错误: 不是封闭类:CustomMainActivity

有什么解决办法吗?

【问题讨论】:

  • 显示来自服务的警报不是一个好习惯。!!试试这个link
  • “我知道有人问过这个问题,但我无法解决。” 链接到您阅读的之前的问题/答案,但无法应用于您的代码,并尽可能说明为什么你不能应用它们。
  • 通过意图/本地广播将数据从服务传递到活动。在接收端提醒数据!。
  • @MadhukarHebbar 我使用了您发送的链接,但我收到了一个错误。

标签: java android


【解决方案1】:

您不能从静态方法访问this

【讨论】:

  • 您可以将Context 作为参数传递给popupDialogMain2()
猜你喜欢
  • 2015-09-15
  • 2016-05-14
  • 2016-01-15
  • 1970-01-01
  • 2020-05-06
  • 2011-07-05
  • 2013-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多