安卓自定义alertdialog更改字体大小报错

xiaolan11112222 2017-08-02 12:08:25
部分主要代码
public class Mydialog {

private static Context context;


public Mydialog(Context context) {
Mydialog.context = context;

}

protected void testDialog2() {
final View layout = View.inflate(context, R.layout.dialog_info, null);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("请输入");
builder.setView(layout);

builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {


}
});

builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
testDialog3();
}
});
builder.setCancelable(false);

builder.create().show();

Dialog dialog = builder.create();
final Button positiveButton = ((AlertDialog) dialog)
.getButton(AlertDialog.BUTTON_POSITIVE);

positiveButton.setTextSize(TypedValue.COMPLEX_UNIT_SP, 28);
final Button negativeButton = ((AlertDialog) dialog)
.getButton(AlertDialog.BUTTON_NEGATIVE);

negativeButton.setTextSize(TypedValue.COMPLEX_UNIT_SP, 28);

}

如上所示,运行程序会崩,自动退出,但是当我把Dialog dialog = builder.create();
final Button positiveButton = ((AlertDialog) dialog)
.getButton(AlertDialog.BUTTON_POSITIVE);

positiveButton.setTextSize(TypedValue.COMPLEX_UNIT_SP, 28);
final Button negativeButton = ((AlertDialog) dialog)
.getButton(AlertDialog.BUTTON_NEGATIVE);

negativeButton.setTextSize(TypedValue.COMPLEX_UNIT_SP, 28); 删除,程序就不会崩,正常运行。可是老板要求更改按钮字体大小,现在改不了,希望懂的人帮帮忙
...全文
222 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaolan11112222 2017-08-02
  • 打赏
  • 举报
回复
引用 1 楼 androidzmm 的回复:
你这个问题是空指针啊。。因为你根本就没拿到按钮positiveButton,你的 final Button positiveButton = ((AlertDialog) dialog) .getButton(AlertDialog.BUTTON_POSITIVE);这一段代码应该放在show()之后, builder.create().show(); Dialog dialog = builder.create();这两短代码修改为: AlertDialog dialog = builder.create(); dialog.show();然后在此之后再调用 final Button positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE);这个获取方法就可以了。。
十分感谢!讲的很清楚,已解决,谢谢交流~
androidzmm 2017-08-02
  • 打赏
  • 举报
回复
你这个问题是空指针啊。。因为你根本就没拿到按钮positiveButton,你的 final Button positiveButton = ((AlertDialog) dialog) .getButton(AlertDialog.BUTTON_POSITIVE);这一段代码应该放在show()之后, builder.create().show(); Dialog dialog = builder.create();这两短代码修改为: AlertDialog dialog = builder.create(); dialog.show();然后在此之后再调用 final Button positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE);这个获取方法就可以了。。

80,348

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧