Java Android视图枚举
在Android中,我想创建一个带有视图的枚举(比如说EditText)。 我想用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
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);
}
}
你为什么要这样做?我想作为一个列表会更舒服,因为我可以存储多个信息