কোনও ক্রিয়াকলাপের মধ্যে কোনও দৃষ্টি নিবদ্ধ করা হয়েছে এবং এটি কী দৃষ্টিভঙ্গি করেছে তা আমার খুঁজে বের করতে হবে। এই কিভাবে করবেন?
কোনও ক্রিয়াকলাপের মধ্যে কোনও দৃষ্টি নিবদ্ধ করা হয়েছে এবং এটি কী দৃষ্টিভঙ্গি করেছে তা আমার খুঁজে বের করতে হবে। এই কিভাবে করবেন?
উত্তর:
getCurrentFocus()ক্রিয়াকলাপে কল করুন।
activity?.currentFocus
ক্রিয়াকলাপের উত্স থেকে:
/**
* Calls {@link android.view.Window#getCurrentFocus} on the
* Window of this Activity to return the currently focused view.
*
* @return View The current View with focus or null.
*
* @see #getWindow
* @see android.view.Window#getCurrentFocus
*/
public View getCurrentFocus() {
return mWindow != null ? mWindow.getCurrentFocus() : null;
}
পরিবর্তে এটি চেষ্টা করুন, সমস্ত কিছু এ এর ভিতরে রাখুন threadএবং আইডি এবং ক্লাসনামটি লাইভ প্রিন্ট করুন logcat। এই কোডটি কেবল আপনার অভ্যন্তরে প্রবেশ করুন Activity, onCreateপদ্ধতিতে তারপরে logcatবর্তমানে কী মনোযোগ দিচ্ছে তা দেখতে আপনার দিকে নজর দিন।
new Thread(() -> {
int oldId = -1;
while (true) {
View newView= this.getCurrentFocus();
if (newView != null && newView.getId() != oldId) {
oldId = view.getId();
String idName = "";
try {
idName = getResources().getResourceEntryName(newView.getId());
} catch (Resources.NotFoundException e) {
idName = String.valueOf(newView.getId());
}
Log.i(TAG, "Focused Id: \t" + idName + "\tClass: \t" + newView.getClass());
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
Thread(Runnable {
var oldId = -1
while (true) {
val newView: View? = this.currentFocus
if (newView != null && newView.id != oldId) {
oldId = newView.id
var idName: String = try {
resources.getResourceEntryName(newView.id)
} catch (e: Resources.NotFoundException) {
newView.id.toString()
}
Log.i(TAG, "Focused Id: \t" + idName + "\tClass: \t" + newView.javaClass)
}
try {
Thread.sleep(100)
} catch (e: InterruptedException) {
e.printStackTrace()
}
}
}).start()
সচেতন হন এই থ্রেডটি 100 মিমি চক্রের মধ্যে চলে তাই এটি অপ্রয়োজনীয় কাজের সাথে সিপিইউ উপচে না যায়।
logcatকরা অনেক বেশি সুরক্ষিত।
কোনও কারণে getCurrentFocus () পদ্ধতিটি আর উপলভ্য নয়; সম্ভবত এটি ইতিমধ্যে অবহিত হয়েছে, এখানে কাজের বিকল্প:
View focusedView = (View) yourParentView.getFocusedChild();
getFocusedChild()একটি পদ্ধতি চালু ViewGroup।
আপনি যদি কোনও খণ্ডে থাকেন তবে আপনি ব্যবহার করতে পারেন
getView().findFocus()