Java 如何为类动态创建findViewById()
我想制作一个游戏,我需要制作一个类,我将发送ImageView的ID,该类使用该ID创建一个对象,这样我就可以在ImageView上运行所有类函数 例如: 假设我有3个ImageView,id为M1、M2和M3。 我想创建一个名为myimg的类,因此当我调用myimgM1时,该类将创建一个对象,该对象将影响ID为M1的ImageView,并在M1上运行类myimg的所有函数Java 如何为类动态创建findViewById(),java,android,Java,Android,我想制作一个游戏,我需要制作一个类,我将发送ImageView的ID,该类使用该ID创建一个对象,这样我就可以在ImageView上运行所有类函数 例如: 假设我有3个ImageView,id为M1、M2和M3。 我想创建一个名为myimg的类,因此当我调用myimgM1时,该类将创建一个对象,该对象将影响ID为M1的ImageView,并在M1上运行类myimg的所有函数 public class myimg{ private ImageView m; my
public class myimg{
private ImageView m;
myimg(int id){
m = (ImageView) findViewById(R.id...)
}
}
如果id值为R.id.XXXX,则它将工作:
myimg(int id){
m = (ImageView) findViewById(id);
}
myimg(String res) {
int id = context.getResources().getIdentifier(res ,"id",getActivity().getPackageName());
m = (ImageView) findViewById(id);
}
Id是一个字符串,它的值是R.Id.XXXX中的XXXX,那么它将工作:
myimg(int id){
m = (ImageView) findViewById(id);
}
myimg(String res) {
int id = context.getResources().getIdentifier(res ,"id",getActivity().getPackageName());
m = (ImageView) findViewById(id);
}
您可以使用myimgImageView为其他方法确定所选的imageView。抓住这一点
public class MyImage {
private ImageView mImageView;
private Activity mActivity;
private ViewGroup mViewGroup;
public MyImage(Activity activity) {
mActivity = activity;
}
public MyImage(ViewGroup viewGroup) {
mViewGroup = viewGroup;
}
public MyImage(Activity activity,int id) {
mActivity = activity;
mImageView = createViewById(id);
}
public MyImage(ViewGroup viewGroup,int id) {
mViewGroup = viewGroup;
mImageView = createViewById(id);
}
public ImageView createViewById(int id) {
if (mActivity != null) {
ImageView view = mAcitivity.findViewById(id);
if (view == null)
throw new IllegalStateException("Can't find resource with id = " + id);
return view;
}
if (mViewGroup != null) {
ImageView view = mViewGroup.findViewById(id);
if (view == null)
throw new IllegalStateException("Can't find resource with id = " + id);
return view;
}
throw new IllegalStateException("Can't create view. Looks like a parent null.");
}
}
使用
注意:如果您要使用MyImage类,您应该确信ViewGroupLinearLayout等不为空