通过磁贴服务显示对话框会出现主题错误

时间:2017-05-12 00:10:41

标签: android service themes

我有一个TileService,一切顺利,直到我点击快速设置托盘中的按钮,它应该显示一个简单的对话框。当我点击快速设置按钮时,应用程序崩溃并出现以下错误 - 您需要使用Theme.AppCompat主题(或后代)进行此活动。

package com.dev.main;

import android.content.DialogInterface;
import android.content.Intent;
import android.os.Build;
import android.service.quicksettings.Tile;
import android.service.quicksettings.TileService;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AlertDialog;
import android.util.Log;
import android.widget.EditText;

@RequiresApi(api = Build.VERSION_CODES.N)
public class MyTileService extends TileService {

@Override
public void onTileAdded() {
}

@Override
public void onStartListening() {
}

@Override
public void onClick() {

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("title");
    builder.setMessage("message");
    builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {

            dialogInterface.dismiss();
        }
    });

    showDialog(builder.create());
}
}

2 个答案:

答案 0 :(得分:0)

我通过使用此行替换警告对话框构建声明来修复此问题 - AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.AppTheme_NoActionBar));

答案 1 :(得分:0)

因为您使用需要上下文的 android.support.v7.app.AlertDialogTheme.AppCompat,但 TileService 由一个简单的 Context 扩展。 你可以导入android.app.AlertDialog来解决。