为什么" 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);
}
答案 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)");
}