java - Android/Java 类事件

标签 java android

我通常使用 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/

相关文章:

java - 将类成员传递给方法

java - 如何禁用 XStream 中不必要的转义?

java - Jsoup 查找具有特定文本的元素

java - C# 到 Java for android

android - 访问具有多个接口(interface)的 android room DB 的最佳解决方案是什么?

android - 一个 ListActivity 和一个 Button : mission impossible?

android - 所有用户在尝试从 Google Play 商店安装我的应用程序时都会收到 941 错误消息

java - 如何将源代码发送给我的客户到应用程序?

java - 为什么如果我从 IDE (Eclipse) 启动一个 Spring Boot 应用程序作为 Java 应用程序,它可以工作,但是当我从 CMD 启动它时,它会出现 Whitelabel 错误?

Android:如何为微调项提供替代颜色