আমার কাছে একটি এডিটেক্সট-ফিল্ড রয়েছে এবং এটির জন্য একটি অনফোকাস চ্যাঞ্জলিস্টনার সেট করব। যখন এটি ফোকাস হারিয়ে ফেলেছে, একটি পদ্ধতি বলা হয়, যা ডাটাবেসের একটিতে এডিটেক্সটের মান পরীক্ষা করে। যদি পদ্ধতির রিটার্ন-মানটি সত্য হয় তবে একটি টোস্ট দেখানো হয় এবং ফোকাসটি আবার সম্পাদনা পাঠের দিকে ফিরে পাওয়া উচিত। পদ্ধতির রিটার্ন-ভ্যালুটি মিথ্যা না হওয়া পর্যন্ত ফোকাসটি সর্বদা এডিটেক্সট এ ফিরে আসা উচিত এবং কীবোর্ডটি প্রদর্শন করা উচিত।
সম্পাদনা: আমি মনে করি, আমি এখনও আমার আসল সমস্যাটি পুরোপুরি পরিষ্কার করে দেখিনি: পর্দার অন্য কোনও আইটেম সম্পাদনা করতে সক্ষম হওয়া উচিত নয়, যতক্ষণ না সম্পাদনা পাঠ্যের মানটি কোনও মানতে সম্পাদিত হয়, যা পদ্ধতিটিকে "চেকলিগানাম (লিগনাম) করে তোলে" "মিথ্যা প্রত্যাবর্তন। শুধুমাত্র এডিটেক্সট-ফিল্ড সম্পাদনাযোগ্য হতে হবে।
এখানে আমার কোড (যা আমার পক্ষে কাজ করে না):
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;
}
এই কোডটি নিম্নলিখিত ফলাফলের দিকে নিয়ে যায়: এডিট টেক্সট ফোকাস হারিয়ে যাওয়ার পরে, ফোকাসটি এডিটেক্সটটিতে ফিরে আসে, তবে আমি আর পাঠ্য সম্পাদনা করতে পারি না।
সম্পাদনা 2: আমার কোড পরিবর্তন হয়েছে। দৃশ্যপট:
আমি প্রথম এডিটেক্সট-এ ক্লিক করেছি এবং এতে একটি স্ট্রিং রেখেছি, যা ইতিমধ্যে ডাটাবেসে রয়েছে। টোস্টটি দেখাচ্ছে। এখন আমি আমার স্ট্রিংটি আর সম্পাদনা করতে পারি না। আমি কীবোর্ডে "পরবর্তী" ক্লিক করি এবং ফোকাসটি প্রথম সম্পাদনা পাঠ্যে থাকে। আমি আমার স্ট্রিং এডিট করার চেষ্টা করি, তবে কিছুই হয় না। পরিবর্তে আমার নতুন স্ট্রিংটি দ্বিতীয় সম্পাদনা পাঠ্যে প্রদর্শিত হচ্ছে। আমি আমার ডিভাইসের পিছনের তীরটিতে ক্লিক করি এবং প্রথম এবং দ্বিতীয় সম্পাদনা পাঠ্য -> কোনও কীবোর্ড দেখানো হচ্ছে নাটিতে পুনরায় ক্লিক করুন।
আমার নতুন কোডটি এখানে:
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();
}
}
}