You need to use a Theme.AppCompat theme (or descendant) with this activity
If you are using the application context, like this:
final AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
change it to an activity context like this:
final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
The reason you are having this problem is because the activity you are trying to apply the dialog theme to is extending ActionBarActivity
which requires the AppCompat
theme to be applied.
Update: Extending AppCompatActivity
would also have this problem
In this case, change the Java inheritance from ActionBarActivity
to Activity
and leave the dialog theme in the manifest as it is, a non Theme.AppCompat
value
The general rule is that if you want your code to support older versions of Android, it should have the AppCompat
theme and the java code should extend AppCompatActivity
. If you have *an activity that doesn't need this support, such as you only care about the latest versions and features of Android, you can apply any theme to it but the java code must extend plain old Activity
.
NOTE: When change from AppCompatActivity
(or a subclass, ActionBarActivity
), to Activity
, must also change the various calls with "support" to the corresponding call without "support". So, instead of getSupportFragmentManager
, call getFragmentManager
.
Copying answer from @MarkKeen in the comments above as I had the same problem.
I had the error stated at the top of the post and happened after I added an alert dialog. I have all the relevant style information in the manifest. My problem was cured by changing a context reference in the alert builder - I changed:
new android.support.v7.app.AlertDialog.Builder(getApplicationContext())
to:
new android.support.v7.app.AlertDialog.Builder(this)
And no more problems.
All you need to do is add android:theme="@style/Theme.AppCompat.Light"
to your application tag in the AndroidManifest.xml
file.