ඉතිරි කළ යුත්තේ කුමක්ද සහ නොකළ යුත්තේ කුමක්ද?
කවදා හෝ කල්පනා කළේ ඇයි? EditText
දිශානතිය වෙනස් වන අතර ස්වයංක්රීයව සුරැකෙන්නේ ? හොඳයි, මෙම පිළිතුර ඔබ වෙනුවෙන් ය.
ක්රියාකාරකමක අවස්ථාවක් විනාශ වූ විට සහ පද්ධතිය නව අවස්ථාවක් ප්රතිනිර්මාණය කළ විට (නිදසුනක් ලෙස, වින්යාස වෙනස් කිරීම). එය පැරණි ක්රියාකාරකම් තත්වයේ ( උදාහරණ තත්වය) සුරකින ලද දත්ත කට්ටලයක් භාවිතා කර එය ප්රතිනිර්මාණය කිරීමට උත්සාහ කරයි ) .
නිදර්ශන තත්වය යනු වස්තුවක ගබඩා කර ඇති යතුරු අගය යුගල එකතුවකි Bundle
.
පෙරනිමියෙන් පද්ධතිය බණ්ඩලයේ ඇති දර්ශන වස්තු සුරකිනු ඇත.
- තුළ පෙළ
EditText
- අ
ListView
, ආදියෙහි අනුචලන පිහිටීම .
නිදර්ශන තත්වයේ කොටසක් ලෙස සුරැකීමට ඔබට වෙනත් විචල්යයක් අවශ්ය නම් ඔබ ඉක්මවා යා යුතුය onSavedInstanceState(Bundle savedinstaneState)
ක්රමවේදය .
උදාහරණයක් වශයෙන්, int currentScore
ක්රීඩා ක්රියාකාරකමක
දත්ත සුරැකීමේදී onSavedInstanceState (Bundle saveinstaneState) පිළිබඳ වැඩි විස්තර
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save the user's current game state
savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
// Always call the superclass so it can save the view hierarchy state
super.onSaveInstanceState(savedInstanceState);
}
එබැවින් වැරදීමකින් ඔබට ඇමතීමට අමතක වුවහොත්
super.onSaveInstanceState(savedInstanceState);
පෙරනිමි හැසිරීම ක්රියා නොකරනු ඇත, එනම් EditText හි පෙළ සුරැකෙන්නේ නැත.
ක්රියාකාරකම් තත්වය ප්රතිස්ථාපනය කිරීම සඳහා තෝරාගත යුත්තේ කුමක්ද?
onCreate(Bundle savedInstanceState)
හෝ
onRestoreInstanceState(Bundle savedInstanceState)
මෙම ක්රම දෙකම එකම බණ්ඩල් වස්තුවක් ලබා ගනී, එබැවින් ඔබේ ප්රතිස්ථාපන තර්කනය ඔබ ලියන්නේ කොතැනද යන්න ගැටළුවක් නොවේ. එකම වෙනස එයයිonCreate(Bundle savedInstanceState)
ක්රමයේදී ඔබට ශුන්ය චෙක්පතක් ලබා දිය යුතු අතර එය දෙවන අවස්ථාවෙහිදී අවශ්ය නොවේ. වෙනත් පිළිතුරු දැනටමත් කේත ස්නිපෙට් ඇත. ඔබට ඒවා යොමු කළ හැකිය.
OnRestoreInstanceState (Bundle saveinstaneState) පිළිබඳ වැඩි විස්තර
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
// Always call the superclass so it can restore the view hierarchy
super.onRestoreInstanceState(savedInstanceState);
// Restore state members from the saved instance
mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
}
සෑම විටම අමතන්න super.onRestoreInstanceState(savedInstanceState);
එවිට පද්ධතිය පෙරනිමියෙන් දර්ශන ධූරාවලිය යථා තත්වයට පත් කරයි
පාරිතෝෂිකය
මෙම onSaveInstanceState(Bundle savedInstanceState)
පරිශීලකයා ක්රියාකාරකම් නැවත එන්න බලාපොරොත්තු විට පමණක් පද්ධතිය මඟින් පළ කළහ ඇත. උදාහරණයක් ලෙස, ඔබ App X භාවිතා කරන අතර හදිසියේම ඔබට ඇමතුමක් ලැබේ. ඔබ අමතන්නාගේ යෙදුම වෙත ගොස් X යෙදුම වෙත නැවත පැමිණේ. මෙම අවස්ථාවේදී onSaveInstanceState(Bundle savedInstanceState)
ක්රමය ක්රියාත්මක වේ.
පරිශීලකයෙකු පසුපස බොත්තම එබුවහොත් මෙය සලකා බලන්න. පරිශීලකයා නැවත ක්රියාකාරකමට පැමිණීමට අදහස් නොකරන බව උපකල්පනය කෙරේ, එබැවින් මෙම අවස්ථාවේ දීonSaveInstanceState(Bundle savedInstanceState)
පද්ධතිය මඟින් ආයාචනා නොකෙරේ. දත්ත සුරැකීමේදී ඔබ සියලු අවස්ථා සලකා බැලිය යුතුය.
අදාළ සබැඳි:
පෙරනිමි හැසිරීම පිළිබඳ නිරූපණය
ඇන්ඩ්රොයිඩ් නිල ප්රලේඛනය .