我的活动中有3个edittext。如果edittext长度不等于0,则第一个edittext将是setFocusable(false)(第一个edittext上的值将来自sqlite)。因此,当我开始活动时,重点将放在第二个edittext上。如果我点击第一个edittext,会出现一个对话框,提示是YES和NO按钮。如果我单击是,它将专注于第一个edittext,我可以编辑该值。但是当我按下手机键盘上的回车键时,它不会指示我进入第二个edittext。它将保留在第一个edittext上。我可以转到第二个edittext的唯一方法是按后退按钮并单击第二个edittext。不知道如何解决这个问题?
这是我的edittext代码:
if (txtBudgetText.getText().toString().length() != 0) {
txtBudgetText.setFocusable(false);
this.txtBudgetText = (EditText) findViewById(R.id.txtBudget);
this.txtBudgetText.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// custom dialog
if ((txtBudgetText.getText().toString().length() != 0) && (txtBudgetText.isFocused()==false) ) {
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.edit_budget);
dialog.setTitle("Confirmation");
// set the custom dialog components - text, image and
// button
TextView text = (TextView) dialog
.findViewById(R.id.text);
text.setText("Are you sure you want to edit your budget?");
ImageView image = (ImageView) dialog
.findViewById(R.id.image);
image.setImageResource(R.drawable.warning);
Button dialogYESButton = (Button) dialog
.findViewById(R.id.dialogButtonYes);
// if button is clicked, close the custom dialog
dialogYESButton
.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
EditText txtBudgetText = (EditText) findViewById(R.id.txtBudget);
txtBudgetText.setFocusableInTouchMode(true);
txtBudgetText.setFocusable(true);
txtBudgetText.requestFocus();
//txtBudgetText.setText("");
dialog.dismiss();
}
});
Button dialogNOButton = (Button) dialog
.findViewById(R.id.dialogButtonNo);
// if button is clicked, close the custom dialog
dialogNOButton
.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
}
});
}
答案 0 :(得分:3)
txtBudgetText.setImeOptions(EditorInfo. IME_ACTION_NEXT);
,在调用findViewById
后添加android:imeOptions="actionNext"
或在layout.xml中设置它。
答案 1 :(得分:0)
请尝试以下代码:
e1.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if (e1.getText().toString().length() == 1) // size as per your
// requirement
{
e2.requestFocus();
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
}
});