0

を に保存しようとするbooleanBundle、(印刷出力から) 保存されているように見えonRestoreInstanceStateますが、アプリの設定ページにアクセスして戻った後、再作成のプロセス中にシステムがメソッドを呼び出しません。(設定は別のアクティビティにあり、右上隅のオプション リストからタップします) に
よると:
https://developer.android.com/training/basics/activity-lifecycle/recreating.htmlメソッドは!=の場合にのみ呼び出されます。また、 (null チェッカーを使用し て) メソッドに入れると、常に null になります。 画像を投稿するほどの評判はありませんが、このリンクには logcat が表示されます。
onRestoreInstanceStateBundlenull
onCreateBundle
https://www.dropbox.com/s/v6vw9ynw5az5zhg/AndroidLogCat.PNG?dl=0

public class MyActivity extends AppCompatActivity {
    public final static String SWITCH_NAME = "com.company.name.myactivity.SWITCH";

    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
        System.out.println("RESTORING INSTANCE STATE");
        super.onRestoreInstanceState(savedInstanceState);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        if (savedInstanceState != null) {
            System.out.println("RECEIVED INSTANCE STATE");
        }
        System.out.println("test");
        super.onCreate(savedInstanceState);
        System.out.println("TEST");
        setContentView(R.layout.activity_my);
        System.out.println("TeSt");
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_my, menu);
        return true;
    }

    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
        System.out.println("SAVING STEP 1: " + getSwitchValue());

        savedInstanceState.putBoolean(SWITCH_NAME, getSwitchValue());
        System.out.println("SAVING TEST BEFORE SUPERCLASS: " + savedInstanceState.getBoolean(SWITCH_NAME));

        super.onSaveInstanceState(savedInstanceState);
        System.out.println("SAVING TEST AFTER SUPERCLASS: " + savedInstanceState.getBoolean(SWITCH_NAME));
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if (id == R.id.action_settings) {
            Intent intent = new Intent(this, DisplayMessageActivity.class);
            startActivity(intent);
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    private boolean getSwitchValue() {
        boolean switchValue = true;

        Switch aSwitch = (Switch) findViewById(R.id.switch1);
        if (aSwitch != null) switchValue = aSwitch.isChecked();

        return switchValue;
    }
}

ありがとう!
ロビー

4

0 に答える 0