Android如何正确使用View.setId

原创 2016年08月30日 18:16:40

有时开发会遇到在java代码中不依赖res-layout动态引入布局,这时候如果我们要给引入的View添加Id,就需要用到View.setId方法了,但是当我们在代码中使用这个方法的时候AS会报错。以前使用Eclipse好像不报错,记不大请了,正确使用方式有两种:

一、通过资源文件

在res/values目录下新建ids文件并在文件中设置id

<resources>
    <item name="test_view" type="id" />
</resources>

然后再在java代码中引用它

test_view.setId(R.id.test_view);

二、通过代码生成,在Api>=17的时候,直接调用View的静态方法:View.generateViewId();即可;

在Api<17的时候,只需要点进View的这个方法,把它copy下来作为我们自己的方法直接用就好了

public static int generateViewId() {
        for (;;) {
            final int result = sNextGeneratedId.get();
            // aapt-generated IDs have the high byte nonzero; clamp to the range under that.
            int newValue = result + 1;
            if (newValue > 0x00FFFFFF) newValue = 1; // Roll over to 1, not 0.
            if (sNextGeneratedId.compareAndSet(result, newValue)) {
                return result;
            }
        }
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

Android 动态设置View的id——setId

view设置id 报错,id必须使用静态int类型
  • zhcswlp0625
  • zhcswlp0625
  • 2017年02月15日 16:51
  • 7964

Android - 动态设置自定义View的id - setId

说明: 动态给自定义view设置id AndroidStudio会报错: 因为在sdk17(4.2.2)以上可以使用myView.setId(View.generateViewId())才行...
  • u012246458
  • u012246458
  • 2016年12月05日 14:11
  • 5335

Android动态setId,避免id重复

当一个布局中Add了两个id相同的控件时,通过findVIewById会出现错误。 解决方法如下: 1.通过 View的 generateViewId() 方法获取一个可用 id....
  • xzy2046
  • xzy2046
  • 2014年10月31日 14:34
  • 4752

Android中View.setId()

View.setId()
  • newMan1024
  • newMan1024
  • 2017年12月02日 22:21
  • 47

Android之 ImageView中setId()的作用

Android中ImageVIew动态生成时,setId()方法的作用
  • adayabetter
  • adayabetter
  • 2015年04月14日 10:48
  • 2491

守护进程与setid()

守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进 程。 Linux的大多数服务器就是用守护进程实现的。比如...
  • Kaiwii
  • Kaiwii
  • 2013年01月09日 14:17
  • 3462

android在代码中为new出的控件设置ID及setId()异常

在写自定义控件时,需要给new出来的控件进行ID的设定,从而来对控件进行布局。 刚开始一直以为setId()传个int就行了,但是一直报错: 解决方法: API 17以上时,可以直接使用...
  • u010246789
  • u010246789
  • 2016年05月12日 11:31
  • 3701

android 中View.setID,与getID

private Map mapBt = new HashMap(); bt.setOnClickListener(new OnClickListener() { @Over...
  • ForeverShine
  • ForeverShine
  • 2015年04月21日 14:53
  • 1371

Android 动态设置View的id——setId

view设置id 报错,id必须使用静态int类型
  • zhcswlp0625
  • zhcswlp0625
  • 2017年02月15日 16:51
  • 7964

view方法setId理解及动态添加组件含style样式

更新2013-1-8: R文件存储的id是C语言的十六进制表示法。 以0x开头,在java中,会自动转成10进制。所以,如下等式是成立的: View m=(View)findViewById(R....
  • hutengfei0701
  • hutengfei0701
  • 2013年01月05日 15:56
  • 6458
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android如何正确使用View.setId
举报原因:
原因补充:

(最多只允许输入30个字)