onSaveInstanceState不起作用

May*_*ndi 5 android android-activity

屏幕旋转时......吐司什么都没打印!

public class MainActivity extends AppCompatActivity {

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

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    String a  = savedInstanceState.getString("hello");
    Toast.makeText(MainActivity.this, a, Toast.LENGTH_SHORT).show();

}

@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
    super.onSaveInstanceState(outState, outPersistentState);
    String a = "WTF";
    outState.putString("hello",a);
}
Run Code Online (Sandbox Code Playgroud)

}

我很好地宣告了一切,在这个简单的代码中哪些是无聊的!

ade*_*hus 12

我认为自从Android OS团队重载该onSaveInstanceState()方法以来,许多开发人员都陷入了一个非常普遍的陷阱.

你是压倒错误的方法.你想要的是:

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    String a = "WTF";
    outState.putString("hello",a);
}
Run Code Online (Sandbox Code Playgroud)

就个人而言,我认为每当Android开发人员犯这个错误时,Craig Mautner都应该被迫捐款 - 来源