android - টেক্সটইনপুটএডিটটেক্সট ফোকাস করার ক্ষেত্রে অ্যান্ড্রয়েড 8.0 ওরিও ক্রাশ




android-edittext android-8.0-oreo (4)

আমাদের কিছু ডিভাইস অ্যান্ড্রয়েড 8.0-এ আপডেট করার পরে, TextInputEditText অভ্যন্তরে একটি TextInputEditText ক্ষেত্রের উপর ফোকাস করার TextInputLayout , অ্যাপ্লিকেশনটি এই Exception সাথে ক্র্যাশ করেছে:

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'void
android.view.View.getBoundsOnScreen(android.graphics.Rect)' on a null object reference
at android.app.assist.AssistStructure$WindowNode.(AssistStructure.java)
at android.app.assist.AssistStructure.(AssistStructure.java)
at android.app.ActivityThread.handleRequestAssistContextExtras(ActivityThread.java:3035)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1807)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

যখন আমরা অ্যান্ড্রয়েড সেটিংস -> সিস্টেম -> ভাষা এবং ইনপুট -> উন্নত -> স্বতঃপূরণ পরিষেবা -> কিছুই না , তারপরে TextInputEditText / TextInputLayout আর ক্রাশ হবে না।

ডিভাইসগুলিতে নতুন 8.0 স্বতঃপূরণ পরিষেবাটি অক্ষম না করে কীভাবে আমরা ক্র্যাশটি ঘটতে রোধ করতে পারি?


@ লুক সিম্পসন ঠিক আছে। আপনি এটি থিমগুলিতে ব্যবহার করতে পারেন X এক্সএমএল পছন্দ করুন: -

<item name="editTextStyle">@style/AppEditTextStyle</item>

and then put
<style name="AppEditTextStyle" parent="Widget.AppCompat.EditText">
        <item name="android:importantForAutofill">auto</item>
 </style>

ভি 26 / অ্যাপ_স্টাইল.এক্সএমএল এ

তবে, আমাকে ডিফল্ট ফোল্ডারে app_styles.xML এ খালি ট্যাগও রাখতে হয়েছিল। অন্যথায়, সম্পাদনা পাঠ্যের সমস্ত বৈশিষ্ট্য এটি দ্বারা ওভাররাইড হয়ে উঠছিল এবং আমার সম্পাদনা পাঠ্যটি সঠিকভাবে কাজ করছে না। এবং যখন আপনি v26 এর জন্য গুরুত্বপূর্ণ অটোফিল সম্পত্তি রাখেন এবং আপনি 8.1-এ অটোফিল কাজ করতে চান, আপনি কেবল লিখতে পারেন

<style name="AppEditTextStyle" parent="Widget.AppCompat.EditText">
        <item name="android:importantForAutofill">auto</item>
    </style>

সুতরাং, অটোফিল সম্পত্তি 8.1 সালে কাজ করে। এটি 8.0-র জন্য অক্ষম হবে কারণ 8.0-এ ক্র্যাশটি হ্যাপেন হচ্ছে এবং এটি ইতিমধ্যে 8.1-এ স্থির করা হয়েছে।


আপনার সম্পাদনা EditText নীচে উল্লিখিত বৈশিষ্ট্য যুক্ত করুন:

android:importantForAutofill="noExcludeDescendants"


আমি এই মধ্যে দৌড়ে। দেখা যাচ্ছে যে TextInputLayout ভিতরে নেস্টেড TextInputLayout ইঙ্গিত পাঠ্য সেট করার কারণে সমস্যাটি হয়েছিল TextInputLayout

আমি কিছু খনন করেছিলাম এবং 26.0.0 বিটা 2 রিলিজ নোটগুলিতে এই ন্যাগেটটি পেয়েছি। অ্যান্ড্রয়েড সমর্থন রিলিজ নোটস জুন 2017

পাঠ্য ইনপুটলয়েটকে অবশ্যই প্রাইভাইডআউটফিল স্ট্রাকচার () এ ইঙ্গিতগুলি সেট করতে হবে

এটি আমাকে নেস্টেড TextInputLayout পরিবর্তে TextInputLayout ইঙ্গিতটি সেট করার চেষ্টা করেছিল।

এটি আমার জন্য ক্র্যাশিং সমস্যা সমাধান করেছে। উদাহরণ:

<android.support.design.widget.TextInputLayout
    android:id="@+id/textInputLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Some Hint Text"
    android.support.design:hintAnimationEnabled="true"
    android.support.design:hintEnabled="true"
    android.support.design:layout_marginTop="16dp">

    <android.support.design.widget.TextInputEditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</android.support.design.widget.TextInputLayout>

আমি বুকমার্কগুলি মিশ্রিত করার সাথে সাথে এটি here উত্তর হিসাবে পোস্ট করেছি। একই উত্তর দু'বার পোস্ট করার জন্য দুঃখিত।


আমি শুধুমাত্র ওরিও 8.0.0 এর জন্য সম্পাদনা পাঠ্য শৈলী অটোফিলকে ওভাররাইড করতে v26 /ums.xml ব্যবহার করেছি:

<style name="EditTextStyle" parent="Widget.AppCompat.EditText">
    <item name="android:importantForAutofill">noExcludeDescendants</item>
</style>

দ্রষ্টব্য যে এটি কার্যকর হওয়ার জন্য আমাকে আমার লেআউট এক্সএমএলে প্রতিটি সম্পাদনা পাঠের জন্য স্টাইলের ইনলাইনটি প্রয়োগ করতে হয়েছিল। আমি এই অ্যাপ্লিকেশন থিমটিতে বিশ্বব্যাপী এই পরিবর্তনটি প্রয়োগ করার চেষ্টা করেছি তবে এটি কোনও কারণে কার্যকর হয়নি।

// HAD TO DO THIS IN LAYOUT XML FOR EACH EDIT TEXT
<EditText
    style="@style/EditTextStyle"
    ... />


// THIS DIDN'T TAKE EFFECT IN THEMES XML (HAS BEEN ADDED TO MANIFEST)
<style name="APP_THEME" parent="@style/Theme.AppCompat.Light">
    <item name="android:editTextStyle">@style/EditTextStyle</item>
    <item name="editTextStyle">@style/EditTextStyle</item>
</style>






android-textinputlayout