gpt4 book ai didi

android - 我怎样才能修复这个重复的代码? - 安卓

转载 作者:行者123 更新时间:2023-11-30 02:45:22 25 4
gpt4 key购买 nike

@Override
protected void onCreate(Bundle savedInstance) {
super.onCreate(savedInstance);
setContentView(R.layout.activity_filter);

etColor1 = (EditText) findViewById(R.id.etColor1);
etColor1.setOnFocusChangeListener(new OnFocusChangeListener() {

@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
etColor1.setEnabled(false);
}
});

btnEdit1 = (Button) findViewById(R.id.btnEdit1);
btnEdit1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
etColor1.setEnabled(true);
etColor1.requestFocus();
}
});

etColor2 = (EditText) findViewById(R.id.etColor2);
etColor2.setOnFocusChangeListener(new OnFocusChangeListener() {

@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
etColor2.setEnabled(false);
}
});

btnEdit2 = (Button) findViewById(R.id.btnEdit2);
btnEdit2.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
etColor2.setEnabled(true);
etColor2.requestFocus();
}
});

etColor3 = (EditText) findViewById(R.id.etColor3);
etColor3.setOnFocusChangeListener(new OnFocusChangeListener() {

@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
etColor3.setEnabled(false);
}
});

btnEdit3 = (Button) findViewById(R.id.btnEdit3);
btnEdit3.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
etColor3.setEnabled(true);
etColor3.requestFocus();
}
});

大家好!所以我有这段代码可以检测 EditText 的焦点。最初,所有 EditTexts 都被禁用,然后当我点击它旁边的“编辑”按钮时,它将被聚焦(其他 EditTexts 仍然被禁用),然后当我点击其他“编辑”按钮时,我已经点击的 EditText 将再次被禁用。

代码很好地满足了我的要求,但我相信它可以缩短。抱歉这个新问题。感谢大家!

最佳答案

正如@Stephan 所提到的,您可以利用这样一个事实,即您设置监听器的 View 在回调中提供给您。只需让您的 Activity 实现这些接口(interface),您就可以大大简化它:

public class MyActivity extends Activity implements 
View.OnFocusChangeListener, View.OnClickListener {

@Override
protected void onCreate(Bundle savedInstance) {
super.onCreate(savedInstance);
setContentView(R.layout.activity_filter);

int[] editTexts = new int[] { R.id.etColor1, R.id.etColor2, R.id.etColor3 };
for (int editText : editTexts) {
findViewById(editText).setOnFocusChangeListener(this);
}

int[] buttons = new int[] { R.id.btnEdit1, R.id.btnEdit2, R.id.btnEdit3 };
for (int button : buttons) {
findViewById(button).setOnClickListener(this);
}
}

@Override
public void onFocusChange(View v, boolean hasFocus) {
v.setEnabled(false);
}

@Override
public void onClick(View v) {
v.setEnabled(true);
v.requestFocus();
}
}

关于android - 我怎样才能修复这个重复的代码? - 安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25129989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com