我正在尝试创建一个这样的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
主题,所以我做错了什么?
答案 0 :(得分:3)
由于您的主题与您的Activity
相关,因此您必须将其传递给context
至AlertDialog.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>