我只想实现一个按钮即可执行多项操作,例如,首先单击以使 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;
}
});
答案 0 :(得分:2)
您可以添加一个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 }