关于自定义alterDialog的问题

zhaozengjie 2014-12-11 05:40:32
我在项目里面写了一个自定义的alterDialog,在rec/layou/alter_dialog中,layout如下:
<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
>
<ImageView
android:id="@+id/iv_alterdialog_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/dialog"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"/>
<ImageView
android:id="@+id/iv_"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>


<TextView
android:id="@+id/tv_alterdialog_null"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text=""
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"/>

<Button
android:id="@+id/btn_dialog_ok"
android:background="@drawable/button_alterdialog"
android:layout_height="wrap_content"
android:layout_width="100dp"
android:text="确定"
android:layout_alignBottom="@+id/iv_alterdialog_title"
android:layout_centerHorizontal="true"
android:layout_marginBottom="15dp"/>


</RelativeLayout>

然后呢,在Activity调用:

private TextView tv_alter_dialog ;
final AlertDialog dialog = new AlertDialog.Builder(ChargeActivity.this).create();
tv_alter_dialog = (TextView) findViewById(R.id.tv_alterdialog_null);
tv_alter_dialog.setText("something");
dialog.show();

dialog.getWindow().setContentView(R.layout.wyf_alter_dialog);

dialog.getWindow()
.findViewById(R.id.btn_dialog_ok)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
}
});
每次setText,应用就会奔溃,这是为什么???
求解
...全文
368 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hudk114 2014-12-13
  • 打赏
  • 举报
回复
还有你alertdialog压根没把view加载进去啊,这怎么找得到啊
hudk114 2014-12-13
  • 打赏
  • 举报
回复
findViewById用dialog的不要用默认的View的那个方法 就是dialog.findViewById
  • 打赏
  • 举报
回复
你没有生成View布局 直接获取ID 会空指针的,View view = inflater.inflate(R.layout.wyf_alter_dialog, null); view.findViewbyid ...这样处理
名字要长一点 2014-12-12
  • 打赏
  • 举报
回复
你在findViewByID的时候,用你dialog.findViewById。就不会报异常,你报异常,是因为你这个activity找不到这个textview的id。这个textview的id是在dialog里面,所以要用dialog 的实例来找id.
zhaozengjie 2014-12-11
  • 打赏
  • 举报
回复
引用 5 楼 s715575807 的回复:
[quote=引用 2 楼 zhaozengjie 的回复:] [quote=引用 1 楼 s715575807 的回复:] 首先你要setview ,获取TextView的时候应该是指定具体view的findViewById即view.findViewById(R.id.tv_alterdialog_null);
我应该在哪里setView???还有后半句怎么理解???[/quote] dialog.getWindow().setContentView(R.layout.wyf_alter_dialog);这个到没用过.....试试这个
        builder = new AlertDialog.Builder(ChargeActivity.this);
        View view = inflater.inflate(R.layout.wyf_alter_dialog, null);
        dialog = builder.create();
        dialog.setView(view, 0, 0, 0, 0);
        tv_alter_dialog = (TextView) view.findViewById(R.id.tv_alterdialog_null);
[/quote] 你写的是什么= =没看懂
s_wenze 2014-12-11
  • 打赏
  • 举报
回复
引用 2 楼 zhaozengjie 的回复:
[quote=引用 1 楼 s715575807 的回复:] 首先你要setview ,获取TextView的时候应该是指定具体view的findViewById即view.findViewById(R.id.tv_alterdialog_null);
我应该在哪里setView???还有后半句怎么理解???[/quote] dialog.getWindow().setContentView(R.layout.wyf_alter_dialog);这个到没用过.....试试这个
        builder = new AlertDialog.Builder(ChargeActivity.this);
        View view = inflater.inflate(R.layout.wyf_alter_dialog, null);
        dialog = builder.create();
        dialog.setView(view, 0, 0, 0, 0);
        tv_alter_dialog = (TextView) view.findViewById(R.id.tv_alterdialog_null);
zhaozengjie 2014-12-11
  • 打赏
  • 举报
回复
引用 3 楼 lxfhjjsfq 的回复:
final AlertDialog dialog = new AlertDialog.Builder(ChargeActivity.this).create(); dialog.getWindow().setContentView(R.layout.wyf_alter_dialog); tv_alter_dialog = (TextView) findViewById(R.id.tv_alterdialog_null); tv_alter_dialog.setText("something"); dialog.show(); 这样试试吧
还是不行,一设就崩溃
_xianfeng99 2014-12-11
  • 打赏
  • 举报
回复
final AlertDialog dialog = new AlertDialog.Builder(ChargeActivity.this).create(); dialog.getWindow().setContentView(R.layout.wyf_alter_dialog); tv_alter_dialog = (TextView) findViewById(R.id.tv_alterdialog_null); tv_alter_dialog.setText("something"); dialog.show(); 这样试试吧
zhaozengjie 2014-12-11
  • 打赏
  • 举报
回复
引用 1 楼 s715575807 的回复:
首先你要setview ,获取TextView的时候应该是指定具体view的findViewById即view.findViewById(R.id.tv_alterdialog_null);
我应该在哪里setView???还有后半句怎么理解???
s_wenze 2014-12-11
  • 打赏
  • 举报
回复
首先你要setview ,获取TextView的时候应该是指定具体view的findViewById即view.findViewById(R.id.tv_alterdialog_null);

80,351

社区成员

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

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