Tôi có một EditText-Field và đặt OnF FocusChangeListener cho nó. Khi nó bị mất tiêu điểm, một phương thức được gọi, nó sẽ kiểm tra giá trị của EditText với một phương thức trong cơ sở dữ liệu. Nếu giá trị trả về của phương thức là đúng, một bánh mì nướng được hiển thị và tiêu điểm sẽ quay trở lại trên EditText một lần nữa. Trọng tâm phải luôn luôn quay trở lại trên EditText và bàn phím sẽ hiển thị, cho đến khi giá trị trả về của phương thức là sai.
EDIT: Tôi nghĩ rằng, tôi vẫn chưa làm rõ vấn đề thực sự của mình: Không có mục nào khác trên Màn hình có thể chỉnh sửa, cho đến khi giá trị của EditText được chỉnh sửa thành giá trị, điều này làm cho phương thức "checkLiganame (liganame) "Trả lại sai. Chỉ có thể chỉnh sửa Trường Chỉnh sửa.
đây là mã của tôi (không hoạt động với tôi):
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();
}
}
và phương pháp:
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;
}
Mã này dẫn đến kết quả sau: Sau khi EditText bị mất tiêu điểm, tiêu điểm sẽ quay trở lại EditText, nhưng tôi không thể chỉnh sửa văn bản nữa.
EDIT2: Thay đổi mã của tôi. Kịch bản:
Tôi nhấp vào EditText đầu tiên và đặt một Chuỗi trong đó, đã có trong cơ sở dữ liệu. Bánh mì nướng đang hiển thị. Bây giờ tôi không thể chỉnh sửa Chuỗi của mình nữa. Tôi bấm "next" trên bàn phím và tiêu điểm vẫn ở EditText đầu tiên. Tôi cố gắng chỉnh sửa Chuỗi của tôi, nhưng không có gì xảy ra. Thay vào đó, Chuỗi mới của tôi hiển thị trong EditText thứ hai. Tôi nhấp vào mũi tên lùi của thiết bị của mình và đọc lại trên EditText thứ nhất và thứ hai -> không có bàn phím nào hiển thị.
Đây là Mã mới của tôi:
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();
}
}
}