我正在Android Studio中制作一个基本游戏,如果播放器旋转屏幕,我希望保存所有数据。因此,我使用受保护的void onSaveInstanceState(Bundle outstate)并使用受保护的void onRestoreInstanceStave(Bundle savedInstanceState)还原它们,并且我有一些按钮已通过编程方式进行了操作。那么我应该如何将Button放入outState?
import ...
public class MainActivity extends AppCompatActivity {
Button btn1, btn2;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = findViewById(R.id.btn_yes);
btn2 = findViewById (R.id.btn_no);
}
protected void onSaveInstanceState(Bundle outState) {
//How to put buttons in outState?
}
protected void onRestoreInstanceState(Bundle savedInstanceState) {
//How to get buttons in savedInstanceState?
}
答案 0 :(得分:1)
您不能将整个小部件放在一个包中-即使在您的onCreate()
方法中,btn1和btn2只是对XML中按钮ID的引用。您可能可以将这些id(它们将是int,因此是可保存的)保存在savedInstanceState中,但这将毫无用处。
当一个活动被销毁并重新创建时,整个屏幕将重新绘制。如果您对按钮进行了任何更改(文本,颜色,数字计数等),则重新创建这些更改的方法是将所有值存储在捆绑包中,然后在其中更新按钮onCreate()