RestoreInstanceState এ অ্যান্ড্রয়েড টুকরা


120

আমি কি কিছু মিস করছি বা আমার কি Fragmentকোনও onRestoreInstanceState()পদ্ধতি নেই? যদি তা না হয় তবে আমি কীভাবে অনুরূপ কিছু অর্জন করতে যাব?

উত্তর:


200

খণ্ডগুলির কোনও onRestoreInstanceStateপদ্ধতি নেই।

আপনি একই ফলাফল অর্জন করতে পারেন onActivityCreated, যা সংরক্ষিত উদাহরণস্বরূপ স্ট্যান্ড (বা নাল) এর সাথে একটি বান্ডিল গ্রহণ করে।

উত্স কোড এখানে পরীক্ষা করুন


89
এটি কোনও ধারাবাহিক নকশা নয়, তাই না?
এহতেশ চৌধুরী ২

4
এটি খণ্ডটি আবার চালু করার যত্ন নেয় না? কনফিগারেশন পরিবর্তনের জন্য এটি সূক্ষ্ম, তবে আপনি যদি কোনও খণ্ড থেকে কোনও ক্রিয়াকলাপে যান এবং তারপরে খণ্ডে ফিরে যান তবে কী হবে?
স্পিডনিডমডস

1
খণ্ডগুলি কোনও ক্রিয়াকলাপের সাথে শুরু হওয়া উচিত, সুতরাং আপনি যদি খণ্ডে সংরক্ষণ করেন তবে এটি পিতামাতার ক্রিয়াকলাপে সংরক্ষণ করে। সুতরাং আপনি যদি সেই খণ্ডটি ছেড়ে দেন (যা কোনও ক্রিয়াকলাপের সাথে সম্পর্কিত) এবং খণ্ডটিতে ফিরে যান তবে সমস্ত মান তারপরে পিতামাতার ক্রিয়াকলাপ থেকে পুনরুদ্ধার করা হয়
শান

3
onActivityCreated () কেবলমাত্র খণ্ডের অবস্থার পুনরুদ্ধার করার পদ্ধতি নয় You আপনি এটি অনক্রিট (), অনক্রিটভিউ (), অথবা অনঅ্যাক্টিভিটি ক্রিয়েটেড () এর সময়কালে পুনরুদ্ধার করতে পারেন। developer.android.com/guide/compferences/frations.html
শেবি

1
@ এহতেশচৌধুরী অ্যান্ড্রয়েড অ্যাপ্লিকেশন বিকাশের কিছুই "ধারাবাহিক ডিজাইন" নয়। এগুলি সমস্ত জগাখিচুড়ে পড়েছে এবং সবকিছুই "অবমূল্যায়ন"।
করণবীর সিং

43

আমি জানি, আপনি উত্তর গ্রহণ করেছেন, তবে খণ্ডগুলি সম্পর্কে আপনার সরকারী ডকুমেন্টেশনটি পড়া উচিত , এবং এটিতে (অনুচ্ছেদে "ফ্রেগমেন্ট লাইফাইসাইকেল পরিচালনা করা" অনুচ্ছেদে) বলা হয়েছে:

ক্রিয়াকলাপের প্রক্রিয়াটি নিহত হওয়ার পরে এবং ক্রিয়াকলাপটি পুনরায় তৈরি করার সময় আপনাকে খণ্ডের অবস্থা পুনরুদ্ধার করতে হবে, আপনি বান্ডিল ব্যবহার করে কোনও খণ্ডের রাজ্য ধরে রাখতে পারবেন। আপনি খণ্ডের onSaveInstanceState () কলব্যাক চলাকালীন রাজ্যটি সংরক্ষণ করতে পারেন এবং অনক্রিয়েট (), অনক্রিটভিউ (), অথবা অনঅ্যাক্টিভিটি ক্রিয়েটেড () এর সময়কালে এটি পুনরুদ্ধার করতে পারেন gment

সুতরাং, আপনি যে স্যুট পরিহিত ব্যবহার করতে পারেন আপনি সেরা: onCreate(), onCreateView(), অথবাonActivityCreated()


29

খণ্ডগুলির গাইডের তালিকার ফ্রেম উদাহরণে আপনি এটি পেতে পারেন:

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("curChoice", mCurCheckPosition);
}

যা আপনি এটির মতো ব্যবহার করতে পারেন:

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    if (savedInstanceState != null) {
        // Restore last state for checked position.
        mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);
    }
}

onActivityCreated() খণ্ডটি স্ট্যাক থেকে ফিরে আসার পরে অনুরোধ করা হয়।


13

onViewStateRestoredএর Fragmentসমতুল্য onRestoreInstanceStateএর Activity। তবে এর onActivityCreated(Bundle)আগে ও আগে বলা হয় onStart()

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.