Android:查找视图';通过提供其自己的id来设置其id

Android:查找视图';通过提供其自己的id来设置其id,android,Android,如果我有ImageButton myPicture。我可以说myPicture=(ImageButton)findviewbyd(myPicture.getId()) 还有什么我可以实现的吗?如果myPicture对象已经存在,为什么要重新创建它 是的,如果已在应用程序上下文中创建了myPicture对象,或者之前已在布局中引用了Id,则这将起作用 您不能将其用作第一次初始化,因为对象为null,您必须首先从布局中获取它 编辑 作为对上述评论的回应,您可以使用XML文件创建模板布局,然后在Jav

如果我有
ImageButton myPicture
。我可以说
myPicture=(ImageButton)findviewbyd(myPicture.getId())


还有什么我可以实现的吗?

如果
myPicture
对象已经存在,为什么要重新创建它

是的,如果已在应用程序上下文中创建了
myPicture
对象,或者之前已在布局中引用了Id,则这将起作用

您不能将其用作第一次初始化,因为对象为null,您必须首先从布局中获取它

编辑


作为对上述评论的回应,您可以使用XML文件创建模板布局,然后在Java代码中,在循环中膨胀模板布局,而不是重复64次,添加所需信息。

当然不能,因为右操作数中的
myPicture
仍然为空,这可能会导致
NullPointerException
,但您没有捕获任何
ImageButton
视图 您可以通过编程方式创建一个

ImageButton imageButton=new ImageButton(this);
或者在布局XML文件上绘制它,然后使用
findViewById(R.id.imageButtonId)


这实际上会创建一个
ImageButton
的视图,然后您可以选择它,但按您的方式,还没有视图可供选择

为什么。。。?如果
myPicture
存在,并且有一个有效的Id,为什么要重新创建它?没有,但可以在R.java文件中找到myPicture的int值,并在findviewbyd中使用(int值)@MaulikSheth是的,问题是我有64个图像按钮,我不想写64行代码。必须有一种方法,我可以找到他们所有的意见使用一个forloop@Clay你不能,因为你需要先初始化它们。所以如果我的布局文件是R.layout.myLayout。如何获取其中的所有64个图像按钮。我需要写64行代码吗?我不能使用for循环?与其有64个图像按钮,不如在looooop中复制一个图像按钮。但是imageButton不同,它们有不同的id,即android:id=“@+id/cell01”您可以通过
imageButton.setId(I+1)在for循环中更改id
但您应该知道,
id
必须是积极的,但最好的方法是使用
ListView
GridView
您将使用
ImageButton
创建XML布局,然后在
ListView
中使用不断变化的适配器对其进行充气,该适配器将保存
ImageButton
列表您可以更改
图像按钮
有关
列表视图的更多信息
请参阅