আমি এসও তে অনুরূপ প্রশ্নের অনেকগুলি উদাহরণ খুঁজে পেয়েছি তবে দুর্ভাগ্যক্রমে কোনও উত্তর আমার প্রয়োজনীয়তা পূরণ করে না।
আমার প্রতিকৃতি এবং ল্যান্ডস্কেপ জন্য বিভিন্ন লেআউট আছে এবং আমি ব্যাক স্ট্যাক ব্যবহার করছি, যা উভয়ই আমাকে ব্যবহার করতে বাধা দেয় setRetainState()
এবং কনফিগারেশন পরিবর্তনের রুটিন ব্যবহার করে কৌশলগুলি ricks
আমি টেক্সটভিউজে ব্যবহারকারীর কাছে নির্দিষ্ট তথ্য দেখাব, যা ডিফল্ট হ্যান্ডলারে সংরক্ষিত হয় না। ক্রমাগত ক্রিয়াকলাপগুলি ব্যবহার করে আমার অ্যাপ্লিকেশনটি লেখার সময়, নিম্নলিখিতগুলি ভালভাবে কাজ করেছে:
TextView vstup;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.whatever);
vstup = (TextView)findViewById(R.id.whatever);
/* (...) */
}
@Override
public void onSaveInstanceState(Bundle state) {
super.onSaveInstanceState(state);
state.putCharSequence(App.VSTUP, vstup.getText());
}
@Override
public void onRestoreInstanceState(Bundle state) {
super.onRestoreInstanceState(state);
vstup.setText(state.getCharSequence(App.VSTUP));
}
এর সাথে Fragment
, এটি কেবল খুব নির্দিষ্ট পরিস্থিতিতে কাজ করে। বিশেষত, ভয়াবহভাবে ভাঙ্গার ফলে কোনও খণ্ডকে প্রতিস্থাপন করা হয়, এটি পিছনের স্ট্যাকের মধ্যে রাখা হয় এবং তারপরে নতুন খণ্ডটি প্রদর্শিত হওয়ার সময় স্ক্রিনটি ঘোরানো হয়। আমি যা বুঝতে পেরেছি তা থেকে, পুরানো খণ্ডটি onSaveInstanceState()
প্রতিস্থাপনের সময় কোনও কল আসে না তবে Activity
এটির সাথে কোনওভাবে যুক্ত থাকে এবং এই পদ্ধতিটি পরে কল করা হয় যখন এর View
আর অস্তিত্ব নেই, সুতরাং আমার কোনও TextView
ফলাফলের জন্য a এ সন্ধান করা NullPointerException
।
এছাড়াও, আমি দেখেছি যে আমার রেফারেন্স পালন TextViews
সঙ্গে একটি ভাল ধারণা নয় Fragment
গুলি, এমনকি যদি এটা দিয়ে ঠিকঠাক লেগেছে Activity
'র। onSaveInstanceState()
সেক্ষেত্রে , প্রকৃতপক্ষে রাষ্ট্রটিকে সংরক্ষণ করে তবে যদি টুকরাকটি লুকানো থাকে তখন আমি পর্দা দু'বার ঘোরালে সমস্যাটি আবার উপস্থিত হয়, কারণ onCreateView()
এটি নতুন ক্ষেত্রে বলা হয় না।
আমি রাষ্ট্র সংরক্ষণ চিন্তা onDestroyView()
কিছু মধ্যে Bundle
টাইপ বর্গ সদস্য উপাদান (এটা আসলে আরো ডেটা, শুধু এক TextView
ও সংরক্ষণ) যে মধ্যে onSaveInstanceState()
তবে অন্যান্য অপূর্ণতা আছে। প্রাথমিকভাবে, যদি টুকরা করা হয় বর্তমানে দেখানো দুটি ফাংশন কলিং আদেশ, বিপরীত তাই আমি দুটি ভিন্ন পরিস্থিতিতে জন্য অ্যাকাউন্ট প্রয়োজন চাই করা হয়। একটি পরিষ্কার এবং সঠিক সমাধান থাকতে হবে!