【问题标题】:one Button for multiple thing一键多事
【发布时间】:2019-02-26 15:19:12
【问题描述】:

我只想实现一个按钮来执行多项操作,例如第一次单击使 Textview1 可见,第二次单击 使 Textview2 可见 等等。

这是我的代码它可以工作,但只有 2 个操作我想在一个按钮中设置更多可见的组件,我希望它清楚并感谢您的帮助

    final TextView textView_r4 = findViewById(R.id.tv_r4);
    final EditText editText_r4 = findViewById(R.id.input_R4);
    final TextView textView_r5 = findViewById(R.id.tv_r5);
    final EditText editText_r5 = findViewById(R.id.input_R5);

    findViewById(R.id.Addbtn).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            textView_r4.setVisibility(View.VISIBLE);
            editText_r4.setVisibility(View.VISIBLE);
        }
    });

    findViewById(R.id.Addbtn).setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            textView_r5.setVisibility(View.VISIBLE);
            editText_r5.setVisibility(View.VISIBLE);
            return true;
       }
    });

【问题讨论】:

  • 你可以在return true之前输入更多指令

标签: android android-button


【解决方案1】:

您可以添加enum 状态来跟踪您的按钮所处的状态。在这些方法所在的同一类(活动)中创建一个类字段,并在每次单击时更改状态。然后在.setOnClickListener 方法中,您可以检查按钮处于哪个状态,并根据该状态执行不同的操作。

private State state = INITIAL;

findViewById(R.id.Addbtn).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        switch (state) {
            case INITIAL:
                // do first action
                state = State.CLICKED_ONCE;
                break;
            case CLICKED_ONCE:
                // do second action
                state = State.CLICKED_TWICE;
                break;
            default:
                // clicked too many times, no action taken
                break;
        }
    }
});

private enum State { INITIAL, CLICKED_ONCE, CLICKED_TWICE }

【讨论】:

  • hi ty for replay,我试过这个开关语句中的 INITIAL、CLICKED_ONCE、CLICKED_TWICE 显示红色错误“无法解析符号”
  • 需要添加State枚举:private enum State { INITIAL, CLICKED_ONCE, CLICKED_TWICE }
  • 我添加它。但可能是错误的位置。我把它放在 oncreate 外面,我试着把它放在同样的错误中
  • 尝试用 State.INITIAL、State.CLICKED_ONCE、State.CLICKED_TWICE 替换它们
猜你喜欢
  • 1970-01-01
  • 2013-03-10
  • 2012-08-15
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
相关资源
最近更新 更多