restore savedInstanceState与存储的

时间:2017-03-03 09:08:14

标签: match store

为什么" savedInstanceState"我用   会发生以下问题? 当程序第一次运行时收到正确的消息。

但是当我选择视频库的视频时。   在' savedInstanceState' "测试"保存它 但是恢复的时候 平等条件'测试' 你不能跑?

中的订单
'Else if (savedInstanceState.getString (" key ")! ="test")'

已经运行了,而且' savedInstanceState.getString(" key")' 是'测试' ?

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (savedInstanceState != null) {

            if (savedInstanceState.getString("key")=="test"){

                TextView txtarr_1=(TextView) findViewById(R.id.test_array_1);
                txtarr_1.setText("if(savedInstanceState.getString(key)==test){" + savedInstanceState.getString("key")+"}");

            }
            else if (savedInstanceState.getString("key")!="test") {
                TextView txtarr_3=(TextView) findViewById(R.id.test_array_3);
                txtarr_3.setText( savedInstanceState.getString("key"));

            }       

        }else{
        TextView txtarr_5=(TextView) findViewById(R.id.test_array_5);
        txtarr_5.setText("elseif (savedInstanceState != null)");
        }}

     @Override
     public void onSaveInstanceState(Bundle savedInstanceState) {
         savedInstanceState.putString("key", "test");

         super.onSaveInstanceState(savedInstanceState);
     }

2 个答案:

答案 0 :(得分:0)

我将代码更改为::而是存储字符串 - >存储整数

@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

   if (savedInstanceState != null) {

   int val=savedInstanceState.getInt("key");

           if (val==123){

    TextView txtarr_1=(TextView) findViewById(R.id.test_array_1);

txtarr_1.setText("if == 123{" + savedInstanceState.getInt("key")+"}");


    }
    else if (val!=123) {
    TextView txtarr_3=(TextView) findViewById(R.id.test_array_3);
txtarr_3.setText( savedInstanceState.getString("key"));
    }     

   }else{
TextView txtarr_5=(TextView) findViewById(R.id.test_array_5);
txtarr_5.setText("elseif (savedInstanceState != null)");
   }}

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putInt("key", putInt);

    super.onSaveInstanceState(savedInstanceState);
}

在这种情况下,问题可以解决 那是意味着 : 检测到我存储123和订单等于123进行 但如果我将123存储为字符串形式  运行订单不等于123执行

调用新活动到存储的表单 和恢复存储的值是不同的 但是,当我显示完全相同的文字?????? 为什么?????

答案 1 :(得分:0)

  

我发现了我的错误

IF中的字符串

必须使用等号,而不是==

if (savedInstanceState != null) {
    String str =savedInstanceState.getString("key");
    if ( str.equals("test")){

        TextView txtarr_1=(TextView) findViewById(R.id.test_array_1);
        txtarr_1.setText("if == test{" + str+"}");

    }
    else if (!str.equals("test")){
        TextView txtarr_3=(TextView) findViewById(R.id.test_array_3);
        txtarr_3.setText("if != test{" + str+"}");

    }       

}else{
TextView txtarr_5=(TextView) findViewById(R.id.test_array_5);
txtarr_5.setText("elseif (savedInstanceState != null)");
}