Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为类动态创建findViewById()_Java_Android - Fatal编程技术网

Java 如何为类动态创建findViewById()

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

我想制作一个游戏,我需要制作一个类,我将发送ImageView的ID,该类使用该ID创建一个对象,这样我就可以在ImageView上运行所有类函数

例如:

假设我有3个ImageView,id为M1、M2和M3。 我想创建一个名为myimg的类,因此当我调用myimgM1时,该类将创建一个对象,该对象将影响ID为M1的ImageView,并在M1上运行类myimg的所有函数

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等不为空