1

私はDrawerLayout新しいプロジェクトで新しいものを実装しています。私のコードはガイドからほぼそのままであり、DrawerLayout方向を変更するまで機能します。向きが変わると、経由で設定されたビューfindViewByIdは null を返します。以下のコードでは、方向の変更時にmDrawerListとの両方mDrawerLayoutが null になりますが、Activity が最初に開かれたときはそうではありません。

を防ぐために null 値をチェックしますNullPointerExceptionが、LogCat で別の警告が表示されます。

05-22 20:56:08.375: W/PhoneWindow(16528): Previously focused view reported id 2130968626 during save, but can't be found during restore.

Activity が読み込まれるようになりましたが、以前のように DrawerLayout が左からスライドアウトすることはなくなりました。ここで何が問題なのですか?

これは私の onCreate が呼び出すメソッドです。

public void initializeDrawer() {

    // Get list of menu items from array resource
    mDrawerItems = getResources().getStringArray(R.array.nav_drawer_items);

    if (mDrawerList == null)
        mDrawerList = (ListView) findViewById(R.id.left_drawer);

    // Set the adapter for the listview
    mDrawerList.setAdapter(new ArrayAdapter<String>(this,
            R.layout.drawer_list_item, mDrawerItems));

    // Set the lists click listener
    mDrawerList.setOnItemClickListener(new DrawerItemClickListener());

    // Set up the action bar toggle listener to get the draw moving
    if (mDrawerLayout == null)
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
            R.drawable.ic_drawer, R.string.drawer_open,
            R.string.drawer_close) {

        /** Called when a drawer has settled in a completely closed state. */
        public void onDrawerClosed(View view) {
            getActionBar().setTitle(mTitle);
            invalidateOptionsMenu(); // creates call to
                                        //     onPrepareOptionsMenu()
        }

        /** Called when a drawer has settled in a completely open state. */
        public void onDrawerOpened(View drawerView) {
            getActionBar().setTitle(mDrawerTitle);
            invalidateOptionsMenu(); // creates call to
                                        //     onPrepareOptionsMenu()
        }
    };

    // Attach the listener
    mDrawerLayout.setDrawerListener(mDrawerToggle);

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);

}
4

2 に答える 2