可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I am trying to create an AlertDialog
but the buttons are not showing. Only seeing this issue in Android 7.0:
final AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("This app needs location access"); builder.setMessage("Please grant location access so this app can detect beacons."); builder.setPositiveButton(android.R.string.ok, null); builder.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override @TargetApi(Build.VERSION_CODES.M) public void onDismiss(final DialogInterface dialog) { requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST_COARSE_LOCATION); } }); builder.show();
回答1:
Indeed it seems that AlertDialog theme needs to be defined. An alternative approach to above would be to define AlertDialog theme in Application theme:
Then it is enough create AlertDialog.Builder
only with Context
parameter.
Note: The above seems to work only for android.app.AlertDialog.Builder
and is not working for AppCompat builder (android.support.v7.app.AlertDialog.Builder
, at least as of version 25.0.1). In case of AppCompat builder, I had to pass theme ID as second parameter to Builder constructor to have buttons visible.
回答2:
So it turns out on Android 7.0 you have to provide a theme. At least, that's what I had to do.
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(getActivity(), R.style.AlertDialogTheme);
回答3:
What worked for me was in styles.xml:
and
and in your program:
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(getActivity(), R.style.LightDialogTheme);
回答4:
You can create a custom theme for Alert Dialog, and set alertDialogTheme
in your app theme.
and finally, set the custom created theme to alertDialogTheme
in Application Theme:
Tested for android.support.v7.app.AlertDialog
回答5:
You need use a theme, like this:
Android.App.AlertDialog