Java onRestoreInstanceState访问kotlin中的私有变量
我在kotlin中初始化了一些私有Int变量Java onRestoreInstanceState访问kotlin中的私有变量,java,android,kotlin,Java,Android,Kotlin,我在kotlin中初始化了一些私有Int变量 class multiply : AppCompatActivity() { . . private var score:Int=0; private var score2=0; . . override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState); if(savedInstanceState==
class multiply : AppCompatActivity() {
.
.
private var score:Int=0;
private var score2=0;
.
.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState);
if(savedInstanceState==null) {
score=score2;
}
.
.
}
.
.
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
super.onRestoreInstanceState(savedInstanceState)
score=savedInstanceState.getInt("val_score");
}
我的问题是,当我旋转手机时,会创建一个新的is活动,并且在当前代码中,分数被分配到0。有没有办法只初始化一次?出路是什么
我在onCreate中使用score进行了一些计算。由于onRestoreInstanceState是在onCreate之后执行的,除了在onStart中定义之外,还有什么方法可以使屏幕旋转时的分数值不受影响吗?您的代码应该如下所示:
class MultiplyActivity : AppCompatActivity() {
private var score = 0;
private var score2 = 0;
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if(savedInstanceState != null) {
score = savedInstanceState.getInt("score", 0)
score2 = savedInstanceState.getInt("score2", 0)
}
}
override fun onSaveInstanceState(bundle: Bundle) {
super.onSaveInstanceState(bundle)
bundle.putInt("score", score)
bundle.putInt("score2", score2)
}
您的代码应该如下所示:
class MultiplyActivity : AppCompatActivity() {
private var score = 0;
private var score2 = 0;
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if(savedInstanceState != null) {
score = savedInstanceState.getInt("score", 0)
score2 = savedInstanceState.getInt("score2", 0)
}
}
override fun onSaveInstanceState(bundle: Bundle) {
super.onSaveInstanceState(bundle)
bundle.putInt("score", score)
bundle.putInt("score2", score2)
}