无法创建AlertDialog:AppCompat错误

时间:2016-12-06 22:33:10

标签: android android-alertdialog android-appcompat

我正在尝试创建一个这样的AlertDialog:

app.post('/message', function (request, response) {
  message = request.body.Body;

  response.send("<Response><Message>Heyyo!</Message></Response>");

  const key = datastore.key('timestamp');

  datastore.save({
    key: key,
    data : {
        timestamp_value: 0
    }
  });


    datastore.insert(entity)
        .then(()=> {
            console.log("Data object inserted successfully.");
        });

});

我正在为我的应用程序使用AppCompat主题。以下是我counterButton.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { new AlertDialog.Builder(context) .setTitle("Delete entry") .setMessage("Are you sure you want to delete this entry?") .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // continue with delete } }) .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // do nothing } }) .setIcon(android.R.drawable.ic_dialog_alert) .show(); // <------- crashes here return true; } }); 的{​​{1}}元素:

application

如您所见,我的主题设置为AndroidManifest.xml。 但是每当我运行我的应用程序时,它都会崩溃,并显示以下错误消息:

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar">
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

我搜索了很多,在SO上发现了一些类似的问题,但没有设法解决问题。我使用@style/Theme.AppCompat.Light.NoActionBar主题,所以我做错了什么?

2 个答案:

答案 0 :(得分:3)

由于您的主题与您的Activity相关,因此您必须将其传递给contextAlertDialog.Builder - getApplicationContext()没有附加主题,这就是您的原因得到错误。

答案 1 :(得分:1)

正如错误所说

You need to use a Theme.AppCompat theme

然后你将创建样式扩展AppTheme

!-- Base application theme. -->
<style name="AppTheme" parent="AppTheme.Base"/>

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->



<activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme"
        >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>