android 如何获取其它布局上的控件id

我建了一个类,两个布局文件
MainActivity.java
activity_main.xml
alter_dialog.xml
其中MainActivity.java的布局文件是activity_main,我把alter_dlalog.xml渲染成了一个自定义的AlterDialog.
在alter_dialog.xml中有一个button,我给button加了一个id,如何在MainActivity中找到这个button的id,并且为他添加一个监听呢?
我用this.findViewById(R.id.xxx);找不到,会报空指针异常.

兄弟你这是要干嘛?你是想给你dialog上的控件设置监听方法吗?你这样写肯定是获取不到的!你需要在你自定义的dialog中写入接口然后再activity中调用这个dialog才从写那dialog中的方法!来处理!追问

额,这个怎么写呢?
可以举个例子吗?
跪谢!

追答

http://pan.baidu.com/s/1jGB6oSY 你自己打开这个下载了解压就能在eclipse中运行!你看效果吧!

这是一个从底部弹出来的对话框!但是和你的效果是一样的!你注意看哪个interface哪个东西!在继承dialog哪个类里面

或者你给我一个效果图 我直接帮你搞定就是了!!

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-12-16
你是通过哪种方式自定义的AlterDialog呢?

如果是用了AlertDialog.Builder的setView方法,那你之前应该调用过Inflater吧,这时候你已经实例化了alter_dlalog.xml得到了一个view,用这个view.findViewById就行。追问

可是,我的MainActivity实现了OnClickListener方法。
如何在onClick中添加监听呢?
我是想把所有的监听事件存放在一处。

@Override
public void onClick(View v) {
这里面该怎么填写呢?
}

追答

哦,这种情况我一般是这么搞的


public void onClick(View v) {
    switch(v.getId()){
    case R.id.button1:
        //button1的点击事件
        break;
    case R.id.button2:
        //button2的点击事件
        break;
    }
}


就是用过id来判断是哪个控件的点击事件。


不过Dialog和Activity其实是两码事,你可以把Dialog想象成一个迷你的Activity,就算你的Activity1实现了全局的onClick,但它依旧管不到Activity2(Dialog)上的控件。


你稍等下,我给你写个简单易懂的Demo。


见Demo,不过我没有让Activity实现onClickListener接口,而是自己new了一个。

本回答被提问者和网友采纳

android 怎么根据子控件的id 找到其对应的父控件id
在布局文件中设置属性,比如android:layout_alignParentRight(右对齐)

求助android开发中 如果两个控件的id相同 会怎样?如何使用findviewbyi...
相同文件下如果控件id相同是不允许的,eclipse会报错的,如果不是同在一个布局文件中的话就可以,findviewbyid ()找的那个id是你前面用setContentView(R.layout.*)中的xml文件中的id

控件id是什么
控件id是唯一标识,方便单独设置这个元素的属性,根据这个id找唯一对应的控件。控件id的获取方法:新建一个html文件,命名为test.html,用于讲解JQuery如何获取控件id。控件id,是作为程序的控件数组变量中的标识。控件ID是HTML元素在文档中的唯一标识符,通过ID可以方便地使用JavaScript或其他前端技术对控件进行...

弱弱的问一下。。。布局文件中给控件取ID有没有什么命名规则的。。拜托...
1. 在项目的根目录有个配置文件“AndroidManifest.xml”,是用来设置Activity的属性的如 其中“android:name=".MyAndroidActivity"”里面的“.”符号表示说当前包的意思, 也就是在<mainfest>标签中设置的package属性“wq.org”指定的包路径,假如wq.org包下还有一个cc包,并且有一个Activity名为CCActiv...

设计一个Android程序,包含一个TextView和一个Button,每次单击Button时...
1、首先在layout文件夹下面的xml布局文件中,添加代码来建立Button。2、然后在可视化界面通过拖拽方式添加Button,如下图所示。3、通过代码来获取到添加的Button实例。R.id来获取指定的名称,而这个名称又唯一对应了控件ID。4、为按钮定制监听器。按钮的监听器就定义了当用户点击按钮式要执行的操作。5、...

android开发 include时如何获取内部控件?
@string\/hello" \/> <include android:id="@+id\/main1" layout="@layout\/sublayout" \/> <include android:id="@+id\/main2" layout="@layout\/sublayout" \/> <Button android:id="@+id\/startanotheractivity" android:layout_width="wrap_content" android:layout_height="wrap_content" android...

手机信息网如何获取当前手机的虚拟按键信息
一般来说,有以下几种方式:1.使用AndroidAPI获取虚拟按键信息Android提供了一个View类,名为ViewConfiguration,它可以获取手机的一些配置信息,包括虚拟按键高度、宽度、位置等。通过ViewConfiguration的静态方法get方法可以获得单例对象,在此基础上可以调用其方法来获取虚拟按键信息,例如代码如下:`javaView...

android 页面布局时定义控件ID时@id\/XX和@+id\/xx 有什么区别?@id\/xx...
id\/XX是引用已经有的.@+id\/XX是新加一个id.@id\/XX的用法如下 先声明一个新的随便什么比如<TextView android:id="@+id\/aa"\/> 然后再声明一个随便什么<Button android:id="@+id\/bb" android:layout align right="@id\/aa"\/>

android开发include如何获取内部控件?
在某个xml中有多个设置了id的控件,新建一个xml在include后,如何获取include之后的内部的控件并对其属性进行修改关于这个问题:1. 直接对include部分的源文件布局做调整;2. 通过代码findViewById()做调整。

android:id="@id\/mWeb"和android:id="@+id\/mWeb"的区别?
Android layout中,@id\/mWeb 表示引用某个ID,android:id="@+id\/mWeb" 表示向Android中增加一个控件ID。Android中的组件需要用一个int类型的值来表示,这个值也就是组件标签中的id属性值。id属性只能接受资源类型的值,也就是必须以@开头的值,例如,@id\/abc、@+id\/xyz等。如果在@后面使用“+”...

相似回答