我有一个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());
}
}
答案 0 :(得分:0)
我通过使用此行替换警告对话框构建声明来修复此问题 - AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.AppTheme_NoActionBar));
答案 1 :(得分:0)
因为您使用需要上下文的 android.support.v7.app.AlertDialog
与 Theme.AppCompat
,但 TileService 由一个简单的 Context
扩展。
你可以导入android.app.AlertDialog
来解决。