将框架用LayoutInflater加载到Dialog中,控件要怎么寻找?

青蛙 2010-06-01 08:45:08
想自定义Dialog的显示,使用LayoutInflater来加载框架页面,框架页中有一个EditText跟Button,想实现点击Button的时候,把EditText的值保存下来,但是找不到EditText这个控件,怎么解决?

按钮的实现方法如下:
private Button.OnClickListener pwdBtnClick = new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
EditText et = (EditText)findViewById(R.id.custome_text);
switch(v.getId()){
case R.id.btn_1:
et.getText();
break;
default:
break;
}
}
};
...全文
366 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
white19871115 2010-12-07
  • 打赏
  • 举报
回复
正值困惑中搜见此贴,问题解决了。十分感谢!
Android的资源管理真让人受不了,不同层次的资源统统用一个动态生成类管理。。。不知道设计人员怎么想的。。。
zennia 2010-08-10
  • 打赏
  • 举报
回复
不错 我刚在这个问题上碰钉子
青蛙 2010-06-02
  • 打赏
  • 举报
回复
LayoutInflater怎么取到?这个寻找需要用Button激活才有效。
我使用v.findViewById()这个方法找不到。
liqi4960710 2010-06-02
  • 打赏
  • 举报
回复
LayoutInflater 对象的findViewById(id)方法寻找;
青蛙 2010-06-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 scliuqiang 的回复:]

EditText是不是配置在r.layout.dialog_layout这个配置文件中
如果是:
View view = inflater.inflate(r.layout.dialog_layout, null);
那么就用 EditText et = (EditText)view.findViewById(R.id.custome_text);
总之就用EditText的……
[/Quote]
使用这种思路可以了,不过这个View不能即时取,而只能使用全局方式,在创建的时候就要保存在那边。
scliuqiang 2010-06-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 runbing 的回复:]
引用 3 楼 stormf 的回复:

EditText et = (EditText)findViewById(R.id.custome_text);这条语句实际是在v中也就是你事件响应的Button里查找有没有你指定的EditText,显然是不可能找到了.你要检查如果你这个语句外面包含的Activity是A,你可以A.this.findViewById(R.id.custome_text)……
[/Quote]

LZ的EditText是在r.layout.dialog_layout这个配置文件中吧?
如果是:
View view = inflater.inflate(r.layout.dialog_layout, null);
EditText et = (EditText)view.findViewById(R.id.custome_text);
总之使用EditText的父容器.findViewById(R.id.custome_text);
就可以了
scliuqiang 2010-06-02
  • 打赏
  • 举报
回复
EditText是不是配置在r.layout.dialog_layout这个配置文件中
如果是:
View view = inflater.inflate(r.layout.dialog_layout, null);
那么就用 EditText et = (EditText)view.findViewById(R.id.custome_text);
总之就用EditText的父容器.findViewById(R.id.custome_text);
就可以找到了。
青蛙 2010-06-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 stormf 的回复:]

EditText et = (EditText)findViewById(R.id.custome_text);这条语句实际是在v中也就是你事件响应的Button里查找有没有你指定的EditText,显然是不可能找到了.你要检查如果你这个语句外面包含的Activity是A,你可以A.this.findViewById(R.id.custome_text)来获取,这样就可以了
[/Quote]
好像不行。
这个Dialog是在MainActivity里,按照你这种说法,在查找的时候应当是MainActivity.this.findViewById(R.id.custome_text),刚才试了一下,不行。

我的代码结构是这样的:
onCreate(){
LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
View view = inflater.inflate(r.layout.dialog_layout, null);
new AlertDialog.Builder(....)
.setView(view)
.show();
}

明显,我这个Inflater只属于MainActivity里,所以不一样的情况。
stormf 2010-06-02
  • 打赏
  • 举报
回复
EditText et = (EditText)findViewById(R.id.custome_text);这条语句实际是在v中也就是你事件响应的Button里查找有没有你指定的EditText,显然是不可能找到了.你要检查如果你这个语句外面包含的Activity是A,你可以A.this.findViewById(R.id.custome_text)来获取,这样就可以了

80,337

社区成员

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

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