gpt4 book ai didi

android - 在 EditText 上设置焦点

转载 作者:IT老高 更新时间:2023-10-28 12:56:38 24 4
gpt4 key购买 nike

我有一个 EditText-Field 并为其设置了 OnFocusChangeListener。当它失去焦点时,会调用一个方法,该方法将 EditText 的值与数据库中的一个进行检查。如果该方法的返回值为 true,则会显示一个 toast,并且焦点应该再次回到 EditText 上。焦点应该总是回到 EditText 并且键盘应该显示,直到方法的返回值为 false。

编辑:我想,我的真正问题还没有完全清楚:屏幕上没有其他项目应该能够编辑,直到 EditText 的值被编辑为一个值,这使得方法“checkLiganame (liganame)"返回 false。只有 EditText-Field 应该是可编辑的。

这是我的代码(对我不起作用):

final EditText Liganame = (EditText) findViewById(R.id.liganame);

Liganame.setOnFocusChangeListener(new OnFocusChangeListener() {

@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {

String liganame = Liganame.getText().toString();


if (checkLiganame(liganame)) {
Toast toast = Toast.makeText(CreateTableActivity.this,
"Dieser Liganame ist bereits vergeben",
Toast.LENGTH_SHORT);
toast.show();
Liganame.requestFocus();
}
}

以及方法:

public boolean checkLiganame(String liganame) {
boolean found = false;

DatabaseHelper databaseHelper = new DatabaseHelper(this);
SQLiteDatabase db = databaseHelper.getReadableDatabase();

Cursor cursor = db.query("liga", new String[] { "liganame" },
"liganame = '" + liganame + "'", null, null, null, null);
Log.i("Liganame: ", String.valueOf(cursor));

db.close();
if (cursor != null) {
found = true;
}

return found;
}

这段代码导致如下结果:EditText失去焦点后,焦点跳回EditText,但我不能再编辑文本了。

EDIT2:更改了我的代码。场景:

我单击第一个 EditText 并将一个字符串放入其中,该字符串已在数据库中。 toast 正在展示。现在我不能再编辑我的字符串了。我单击键盘上的“下一步”,焦点停留在第一个 EditText 上。我尝试编辑我的字符串,但没有任何反应。相反,我的新字符串显示在第二个 EditText 中。我单击设备的后退箭头,然后重新单击第一个和第二个 EditText --> 没有显示键盘。

这是我的新代码:

public class CreateTableActivity extends Activity implements
OnFocusChangeListener {

private EditText Liganame, Mannschaftsanzahl;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.create_league);

Liganame = (EditText) findViewById(R.id.liganame);
Liganame.setOnFocusChangeListener(this);
Mannschaftsanzahl = (EditText) findViewById(R.id.mannschaftsanzahl);
Mannschaftsanzahl.setOnFocusChangeListener(this);

final Button save_button = (Button) findViewById(R.id.create_tabelle_speichern_button);

OnClickListener mCorkyListener = new OnClickListener() {
public void onClick(View v) {
ButtonClick();
}
};
save_button.setOnClickListener(mCorkyListener);



}

@Override
public void onFocusChange(View v, boolean hasFocus) {
String liganame = Liganame.getText().toString();

if (checkLiganame(liganame)) {
if (Liganame.requestFocus()) {
getWindow()
.setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
Mannschaftsanzahl.clearFocus();
Toast.makeText(CreateTableActivity.this,
"Dieser Liganame ist bereits vergeben",
Toast.LENGTH_SHORT).show();
}
}
}

最佳答案

只需将这一行放在你的 onCreate()

editText.requestFocus();

关于android - 在 EditText 上设置焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14327412/

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