【问题标题】:onRestoreInstanceState accessing private variables in kotlinonRestoreInstanceState 访问 kotlin 中的私有变量
【发布时间】:2020-03-30 06:00:27
【问题描述】:

我在 kotlin 中初始化了一些私有 Int 变量。

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");
     }


我的问题是,当我旋转手机时,会创建一个新的活动,并且在当前代码中,分数被分配为 0。有没有办法只初始化一次?出路是什么?

我在 onCreate 中使用分数进行了一些计算。由于 onRestoreInstanceState 是在 onCreate 之后执行的,除了在 onStart 中定义 score 的值之外,还有什么方法可以保持 score 的值不受屏幕旋转的影响?

【问题讨论】:

    标签: java android kotlin


    【解决方案1】:

    您的代码应如下所示:

    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)
        }
    

    【讨论】:

      猜你喜欢
      • 2020-07-24
      • 1970-01-01
      • 1970-01-01
      • 2015-09-25
      • 2012-05-09
      • 2018-11-02
      • 1970-01-01
      • 1970-01-01
      • 2011-11-05
      相关资源
      最近更新 更多