Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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 Android视图枚举_Java_Android_Enums - Fatal编程技术网

Java Android视图枚举

Java Android视图枚举,java,android,enums,Java,Android,Enums,在Android中,我想创建一个带有视图的枚举(比如说EditText)。 我想用findViewById(R.id.something)初始化EditText,您必须在activity类中这样做,或者您需要这个类的实例 那么,如何初始化枚举中的EditText,或者如何从主类设置视图呢 我曾想过这样的事情,但行不通: enum Edits { one(/* what to write here */), two(/* what to write here */); priva

在Android中,我想创建一个带有视图的枚举(比如说EditText)。 我想用
findViewById(R.id.something)
初始化EditText,您必须在activity类中这样做,或者您需要这个类的实例

那么,如何初始化枚举中的EditText,或者如何从主类设置视图呢

我曾想过这样的事情,但行不通:

enum Edits {
    one(/* what to write here */), two(/* what to write here */);

    private EditText editText;

    Edits(EditText editText){
        this.editText = editText;
    }

    EditText getEditText(){
        return this.editText;
    }

    void setEditText(EditText editText){ // Maybe something like this?
        this.editText = editText;
    }
}

那么,您将如何做到这一点呢?

试图在枚举中存储对
EditText
的引用,或者任何
视图的引用,实际上是行不通的

在Java中,枚举本质上是一个单例,正如您所指出的,
视图
耦合到它的
上下文
,这将是它的活动或片段。因此,让一个长寿命的对象(您的枚举)引用寿命极短的对象(您的
EditText
)是没有意义的

或者,您可以让枚举存储
视图的ID
(例如,
R.ID.myEditText
),然后当您想要检索实际实例时,传入活动或片段并调用
findViewById()
)以获取实际实例

示例:

enum Edits {
    one(R.id.field1), two(R.id.field2);

    private int editTextId;

    Edits(int editTextId) {
        this.editTextId = editTextId;
    }

    EditText getEditText(Activity activity){
        return (EditText)activity.findViewById(editTextId);
    }
}

你为什么要这样做?我想作为一个列表会更舒服,因为我可以存储多个信息