2013-11-10 67 views
0

我试图做出反击,并试图当你离开应用程序保存当前的价值,所以我试图用onSaveInstanceStateonRestoreInstanceState,但它似乎没有工作和的onSaveInstanceState似乎onRestoreInstanceState无法工作

代码如下

package com.example.taekwondobuddy.util; 

import android.app.Activity; 

import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class Counter extends Activity { 

int counter; 
Button add; 
Button sub; 
TextView display; 


public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.counter); 

    counter = 0; 
    add = (Button) findViewById(R.id.button1); 
    sub = (Button) findViewById(R.id.button2); 
    display = (TextView) findViewById(R.id.tvDisplay); 
    add.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      counter++; 
      display.setText("Counter: " + counter); 
     } 
    }); 
    sub.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      counter--; 
      display.setText("Counter: " + counter); 
     } 
    }); 
} 

public void onSaveInstanceState(Bundle savedInstanceState) { 
     super.onSaveInstanceState(savedInstanceState); 


     savedInstanceState.putInt("counter", counter); 


    } 

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 


    counter = savedInstanceState.getInt("counter"); 

    } 



    } 

这是我第一次,我overring savedInstanceState,所以我在想,如果语法是正确的,我我用正确的方式?如果有的话,我的代码有什么问题?帮助和提示将不胜感激

+0

http://stackoverflow.com/questions/6525698/how-to-use-onsavedinstancestate-example-please已经是这个东西是这里的例子.. –

回答

2

您需要交换方法中的顺序,因为父节点的实现方法将从方法返回并且代码不会运行。此外,您需要检查onRestoreInstanceState中的参数是否为空。

public void onSaveInstanceState(Bundle savedInstanceState) { 
    savedInstanceState.putInt("counter", counter); 
    super.onSaveInstanceState(savedInstanceState); 
} 

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    if (savedInstanceState != null) { 
     counter = savedInstanceState.getInt("counter"); 
    } 
    super.onRestoreInstanceState(savedInstanceState); 
} 

您也说

我试图做出反击,并试图当你离开应用程序

保存实例状态仅适用于保存当前值当应用程序在内存中时(尽管应用程序不会删除它)。如果它被杀死了,国家将会失去。

+0

我工作时,我带着家离开,但当我推回去时(这是菜单的一部分,忘记说了),它没有保存实例 – user2809321

1

你不需要onRestoreInstanceState()。这在onCreate()之后被调用,并且对于需要onCreate()中的数据的应用程序通常是毫无价值的。您想要在传递Bundle的onCreate()中检索已保存的状态。

在的onCreate():

counter = 0; 
if (savedInstanceState != null) { 
    counter = savedInstanceState.getInt("counter", 0); 
} 
相关问题