简体   繁体   中英

Firebase java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity

I read many similar questions but couldn't figure out how to solve my problem.

I got this class where I receive cloud-messaging notifications from firebase:

public class FirebaseMessagingServiceImpl extends FirebaseMessagingService {

    private final static String TAG = "FirebaseMessaging";

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        Log.i(TAG, "Message from " + remoteMessage.getFrom());
        if (remoteMessage.getNotification() != null) {
            final String content = remoteMessage.getNotification().getBody();
            final String title = remoteMessage.getNotification().getTitle();
            Log.i(TAG, "...with content: " + content);

            new Handler(Looper.getMainLooper()).post(new Runnable() {
                @Override
                public void run() {
                    UserInterfaceUtils.getAlertDialog(
                            getApplicationContext(),
                            title,
                            content,
                            android.R.string.ok,
                            android.R.string.no,
                            android.R.drawable.ic_dialog_alert,
                            null, null,
                            true, false).show();
                }
            });
        }
        super.onMessageReceived(remoteMessage);
    }

    @Override
    public void onDeletedMessages() {
        super.onDeletedMessages();
    }
}

From there I want to create an alert.dialog . But I get this IllegalStateException . When I log the string of the getApplicationContext() I get this: android.support.multidex.MultiDexApplication@42585d08

I am very stuck here and have no clue how to solve this.

For completeness here my getAlertDialog-method:

public static AlertDialog.Builder getAlertDialog(Context context, String title, String message, int pos, int neg, int icon, final Callable posFunc, final Callable negFunc, boolean posButton, boolean negButton) {
        AlertDialog.Builder builder;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            builder = new AlertDialog.Builder(context, R.style.ShopDialogTheme);
        } else {
            builder = new AlertDialog.Builder(context);
        }

        builder.setTitle(title)
                .setMessage(Html.fromHtml(message));

        if (posButton)
            builder.setPositiveButton(pos, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    try {
                        posFunc.call();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        if (negButton)
            builder.setNegativeButton(neg, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    try {
                        negFunc.call();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        builder.setCancelable(false);
        builder.setIcon(icon);
        return builder;
    }

根据标题,听起来好像代码运行时您拥有的任何Activity都在扩展Activity,并且它需要扩展AppCompatActivity,并且您在res / styles.xml中使用的任何主题都应该是AppCompat主题。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM