Я отправляю Broadcast
из службы, а затем получаю его обратно из внутреннего класса BroadcastReceiver
. Я должен показать AlertDialog
основанный на некоторой логики, но при попытке сделать это, я получаю эту ошибку во время выполнения: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
Получение 'Вам нужно использовать тему Theme.PpCompat (или потомка) с этим действием.' при попытке показать AlertDialog от BroadcastReceiver
Вот MyBroadcastReceiver
класс:
public class MyBroadcastReceiver extends BroadcastReceiver {
public MyBroadcastReceiver(){
super();
}
@Override public void onReceive(final Context context, Intent intent) {
if (intent.getAction() != null && intent.getAction().equals(getString(R.string.broadcast_id))) {
Intent intent1 = new Intent(MyService.this, MainActivity.class);
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent1);
@Override
public void run() {
if (someCondition) {
android.support.v7.app.AlertDialog.Builder builder1 = new android.support.v7.app.AlertDialog.Builder(getBaseContext());
builder1.setView(R.layout.dialog);
builder1.setPositiveButton(
"OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent notificationIntent = new Intent(getBaseContext(), Notification.class);
notificationIntent.putExtra(Notification.NOTIFICATION, getNotificationGame());
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), m, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getBaseContext().getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, finalFutureInMillis, pendingIntent);
postMethod(MainActivity.name, MainActivity.uidOfProfilePic, String.valueOf(MainActivity.currentLatDouble), String.valueOf(MainActivity.currentLngDouble), null, s, v, sA, requestID, user.getUid(), nP);
dialog.cancel();
}
});
final android.support.v7.app.AlertDialog alert11 = builder1.create();
alert11.setCancelable(false);
alert11.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
// error on line below
alert11.show();
}
}
}
}
}
Я искал в интернете для этого и придумали с this, который предлагает создать активность и сделать в нем код AlertDialog, но, как вы можете видеть, я выполняю некоторую работу, когда пользователь нажимает OK
и этот код извлекается в Service
, и я не смогу получить к нему доступ из другого вида деятельности ,
Пожалуйста, дайте мне знать Что теперь делать?
Какую тему вы используете в своей деятельности ?, вы используете панель инструментов? – Diekrul
@ Diekrul в этой деятельности: 'MainActivity.class'? или в котором передатчик является? потому что этот вещательный приемник находится в Службе, а не в действии, как сказано в вопросе. –