我通常使用 VB.NET 编写代码,而且对 Android/Java 环境还比较陌生。 所以请原谅我的小白。
我制作了一个带有简单的“新建/编辑/保存/删除”按钮和一些 EditText 的应用程序。 在.NET中,我通常创建自己的“Mode”对象,它由4个状态组成,“New/Edit/View/Idle”与ModeChanged事件相关,然后该类将被声明为WithEvents,这样我就可以通过ModeChanged事件管理我的界面.
现在在 android 中我尝试使用 ModeObject 类来实现相同的功能
public class ModeObject {
private enum Mode {
IDLE, NEW, VIEW, EDIT
}
private Mode mode;
public ModeObject() {
mode = Mode.IDLE;
}
public void SetNew() {
mode = Mode.NEW;
}
public void SetIdle() {
mode = Mode.IDLE;
}
public void SetView() {
mode = Mode.VIEW;
}
public void SetEdit() {
mode = Mode.EDIT;
}
public String GetMode() {
return mode.toString();
}
public boolean isNew() {
if(mode==Mode.NEW) return true;
else return false;
}
public boolean isIdle() {
if(mode==Mode.IDLE) return true;
else return false;
}
public boolean isView() {
if(mode==mode.VIEW) return true;
else return false;
}
public boolean isEdit() {
if(mode==mode.EDIT) return true;
else return false;
}
}
这是我的主要 Activity
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.vehicle);
private Button btnNew;
private Button btnSave;
private Button btnEdit;
private Button btnCancel;
private Button btnDelete;
private Spinner spinner;
private ModeObject mode = new ModeObject();
btnNew = (Button) findViewById(R.id.btnVehicle_New);
btnSave = (Button) findViewById(R.id.btnVehicle_Save);
btnEdit = (Button) findViewById(R.id.btnVehicle_Edit);
btnCancel = (Button) findViewById(R.id.btnVehicle_Cancel);
btnDelete = (Button) findViewById(R.id.btnVehicle_Delete);
btnNew.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
mode.setNew();
}
});
btnEdit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
mode.setEdit();
}
});
btnView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
mode.setView();
}
});
}
我不想在每个监听器中设置布局接口(interface),而是希望创建一个监听器,在 ModeObject 值更改时监听,并在一个过程中为我提供轻松的布局控制管理,而不是多个 onClickListener。
类似这样的事情
private void mode.onModeChanged() {
if mode.isNew() {
\\Change the interface formats
}
elseif mode.isIdle() {
\\Change the interface formats
}
else if mode.isView() {
\\Change the interface formats
}
else if mode.isEdit() {
\\Change the interface formats
}
}
如何在 Android/Java 中实现它?是的,我知道一些自定义监听器对我来说有些模糊,因为我不习惯 Android/Java 环境。
编辑1:抱歉,如果我的问题不清楚。
编辑 2:ModeObject 状态从字符串更改为枚举
最佳答案
试试 event-dispatching-sending-messages 中的代码:
原始来源:event-dispatching-sending-messages
import java.util.Observable;
public class ModeObject extends Observable{
public enum Mode {
IDLE, NEW, VIEW, EDIT
}
private Mode mode;
public ModeObject() {
mode = Mode.IDLE;
}
public void SetNew() {
mode = Mode.NEW;
notifyObservers();
}
public void SetIdle() {
mode = Mode.IDLE;
notifyObservers();
}
public void SetView() {
mode = Mode.VIEW;
notifyObservers();
}
public void SetEdit() {
mode = Mode.EDIT;
notifyObservers();
}
public Mode GetMode() {
return mode;
}
}
Activity :
import java.util.Observable;
import java.util.Observer;
public class ModeChangeObserver extends Activity implements Observer{
private ModeObject mode = new ModeObject();
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.vehicle);
mode.addObserver(this);
}
@Override
public void update(Observable o, Object arg) {
switch(((ModeObject)o).GetMode())
{
case IDLE:
break;
case NEW:
break;
case VIEW:
break;
case EDIT:
break;
}
}
}
关于java - Android/Java 类事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26419949/