উত্তর:
আপনি যদি TextView
তার রাজ্যটি সংরক্ষণ করতে বাধ্য করতে চান তবে আপনাকে অবশ্যই freezesText
গুন যুক্ত করতে হবে :
<TextView
...
android:freezesText="true" />
ডকুমেন্টেশন থেকে freezesText
:
যদি সেট করা থাকে তবে পাঠ্য দর্শনটিতে বর্তমান কার্সারের অবস্থানের মতো মেটা-ডেটা ছাড়াও হিমায়িত আইিকেলের ভিতরে এটির সম্পূর্ণ সম্পূর্ণ পাঠ্য অন্তর্ভুক্ত থাকবে। ডিফল্টরূপে এটি অক্ষম; কোনও পাঠ্য দৃশ্যের বিষয়বস্তু যখন অবিচ্ছিন্ন স্থানে যেমন একটি সামগ্রী সরবরাহকারী সংরক্ষণ করা না হয় তখন এটি কার্যকর হতে পারে
ওরিয়েন্টেশন পরিবর্তনের উপর ডেটা ধরে রাখার জন্য আপনাকে দুটি পদ্ধতি প্রয়োগ করতে হবে:
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// Read values from the "savedInstanceState"-object and put them in your textview
}
@Override
protected void onSaveInstanceState(Bundle outState) {
// Save the values you need from your textview into "outState"-object
super.onSaveInstanceState(outState);
}
1) কোনও আইডি সহ সমস্ত দর্শন তাদের রাজ্য সংরক্ষণ করে না। একটি আইডি সহ অ্যান্ড্রয়েড উইজেট, যার রাজ্যটি ব্যবহারকারী দ্বারা পরিবর্তন করা যেতে পারে, তাদের রাষ্ট্রকে একটি সফট কিলের সাহায্যে সংরক্ষণ করতে উপস্থিত হয়। সুতরাং এডিটেক্সট তার রাজ্যটি সংরক্ষণ করে, তবে টেক্সটভিউ তার রাষ্ট্রটিকে কোনও সফট কিলের সাহায্যে সংরক্ষণ করে না।
"এএফএইকি, অ্যান্ড্রয়েড কেবল পরিবর্তিত প্রত্যাশিত জিনিসগুলির জন্য রাষ্ট্রের সংরক্ষণকে বিরক্ত করে That এ কারণেই এটি একটি সম্পাদনা পাঠ্যটিতে (যা ব্যবহারকারী পরিবর্তিত হওয়ার সম্ভাবনা রয়েছে) পাঠ্যটি সংরক্ষণ করে এবং সম্ভবত কোনও পাঠ্যদর্শন (যা সাধারণত স্থিতিশীল থাকে) রাষ্ট্রের সংরক্ষণ করে না ) "
মার্ক এম
সুতরাং আপনি onSaveInstanceState এ পাঠ্যদর্শনটির রাজ্যটি বাছাই করতে পারেন এবং আপনি onCreate এ পাঠ্যদর্শনটির অবস্থা পুনরুদ্ধার করতে পারেন।
2) সর্বোত্তম অনুশীলন হ'ল "ঘোষণা করা সত্ত্বেও" অভ্যন্তরীণ "অ দর্শনীয় দৃষ্টান্তের অবস্থা সংরক্ষণ করা
android:configChanges= "orientation|keyboardHidden"
ডক্স থেকে:
"তবে, আপনার অ্যাপ্লিকেশনটি সর্বদা পূর্ববর্তী অবস্থায় অক্ষত অবস্থায় পুনরায় চালু করতে এবং পুনরায় চালু করতে সক্ষম হওয়া উচিত only কেবলমাত্র অন্যান্য কনফিগারেশন পরিবর্তনগুলির কারণে আপনি আপনার অ্যাপ্লিকেশনটি পুনরায় আরম্ভ করতে বাধা দিতে পারবেন না তবে ইভেন্টগুলি পরিচালনা করতে যেমন ব্যবহারকারীর আগমন ঘটে receives ফোন কল এবং তারপরে আপনার আবেদনে ফিরে আসে returns
Jal
অ্যান্ড্রয়েড আপনার জন্য এই ধরণের জিনিস পরিচালনা করে না। আপনি সমস্ত ডেটা ম্যানুয়ালি সংরক্ষণ করেছেন।
আপনি মানগুলি সংরক্ষণ করতে কোনও ক্রিয়াকলাপে ব্যবহার করতে পারেন
@Override
public Object onRetainNonConfigurationInstance() {
HashMap<String, Object> savedValues = new HashMap<String, Object>();
savedValues.put("someKey", someData);
return savedValues;
}
এবং সংরক্ষিত অবজেক্টগুলি লোড করতে কোনও ক্রিয়াকলাপের oncreate পদ্ধতিতে এই জাতীয় কিছু ব্যবহার করুন
HashMap < String, Object> savedValues
= (HashMap<String, Object>)this.getLastNonConfigurationInstance();
আপনি কোনও ক্রিয়াকলাপের জন্য অক্ষম ওরিয়েন্টেশন পরিবর্তনও চয়ন করতে পারেন
<activity android:name=".Activity" android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
এটি আপনার ক্রিয়াকলাপ / ক্রিয়াকলাপগুলিতে যুক্ত করে ওরিয়েন্টেশন পরিবর্তনের আচরণকে ওভাররাইড করতে আপনার ক্রিয়াকলাপগুলিকে অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল করুন:
android:configChanges="orientation|keyboardHidden"
এটি কিছুটা এরকম দেখতে হবে:
<activity android:name=".activity.LoginActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
</activity>
এগুলি অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল এ যুক্ত করুন
আপনার ক্রিয়াকলাপের নামটি ক্রিয়াকলাপ_নামের জায়গায় রাখুন
<activity android:name="Activity_Name"
android:screenOrientation="sensor"
...
android:configChanges="orientation|keyboardHidden|screenSize">
এটি টেক্সটফিল্ডে মান পরিবর্তন করার সাথেও কাজ করবে।
শুধু যোগ কর
android:configChanges="orientation|screenSize"
অ্যান্ড্রয়েডম্যানিফেস্ট.এক্সএমএলে আপনার ক্রিয়াকলাপে।
যখন কনফিগারেশন পরিবর্তন হয় অ্যান্ড্রয়েড ডিফল্টরূপে আপনার ক্রিয়াকলাপ পুনরায় আরম্ভ করে। এটি পরিবর্তন করতে আপনার onConfigurationChanged()
পদ্ধতি ওভাররাইড করা উচিত । এছাড়াও, android:configChanges
আপনার নিজের মেনিফেস্ট ফাইলটি যুক্ত করা উচিত ।
আপনি এখানে আরও পড়তে পারেন ।
আমিও ব্যবহার করেছি
android:configChanges="orientation"
এবং এটি কার্যকর হয়নি।
তবে আমি একটি সমাধান খুঁজে পেয়েছি।
আপনার ম্যানিস্টে নীচের লাইনটি সঠিকভাবে রয়েছে কিনা তা যাচাই করুন:
<uses-sdk android:minSdkVersion="11" android:targetSdkVersion="11" />
এটি যেমন কিছু না পড়েন তা নিশ্চিত করুন
<uses-sdk android`:minSdkVersion="11" android:targetSdkVersion="15" />`
আমার কাছে এটি দ্বিতীয় স্থানে ছিল তবে আমি যখন এটি সংশোধন করেছি তখন রাষ্ট্রটি সংরক্ষণ করা হয়েছিল।