Saya memiliki EditText-Field dan mengatur OnFocusChangeListener untuk itu. Ketika kehilangan fokus, sebuah metode dipanggil, yang memeriksa nilai EditText dengan satu di database. Jika nilai pengembalian metode ini benar, bersulang ditampilkan dan fokus harus kembali pada EditText lagi. Fokus harus selalu kembali pada EditText dan keyboard akan ditampilkan, sampai nilai pengembalian metode salah.
EDIT: Saya pikir, saya belum membuat masalah nyata saya menjadi sangat jelas: Tidak ada Item lain di Layar yang dapat diedit, sampai nilai EditText diedit ke nilai, yang membuat metode "checkLiganame (liganame) "return false. Hanya Bidang-EditTeks yang dapat diedit.
ini kode saya (yang tidak berfungsi untuk saya):
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();
}
}
dan metodenya:
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;
}
Kode ini mengarah ke hasil berikut: Setelah EditText kehilangan fokus, fokus melompat kembali ke EditText, tetapi saya tidak dapat mengedit teks lagi.
EDIT2: Mengubah kode saya. Skenario:
Saya klik pada EditText pertama dan meletakkan String di dalamnya, yang sudah ada di database. Roti panggang ditampilkan. Sekarang saya tidak bisa lagi mengedit String saya. Saya klik "berikutnya" pada keyboard dan fokusnya tetap pada EditText pertama. Saya mencoba mengedit String saya, tetapi tidak ada yang terjadi. Alih-alih, String saya yang baru muncul di EditText kedua. Saya mengklik panah belakang perangkat saya dan mengklik kembali EditText pertama dan kedua -> tidak ada keyboard yang ditampilkan.
Ini kode baru saya:
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();
}
}
}