更改视图Android抽屉

时间:2014-06-04 18:32:15

标签: java android android-layout android-fragments android-listview

您好我想用抽屉选择更改视图,它可以工作,但第一个视图保留在新的...

我有一个叠加的布局......

我该怎么办?

另外,我如何恢复当前布局的ID?

public class display extends MainActivity {

private String[] drawerListViewItems;
private ListView drawerListView;
private DrawerLayout drawerLayout;
private ActionBarDrawerToggle actionBarDrawerToggle;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.display);
    drawerListViewItems = getResources().getStringArray(R.array.items);
    drawerListView = (ListView) findViewById(R.id.left_drawer);
    drawerListView.setAdapter(new ArrayAdapter<String>(this,
            R.layout.drawer_listview_item, drawerListViewItems));
    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    actionBarDrawerToggle = new ActionBarDrawerToggle(
            this,
            drawerLayout,
            R.drawable.ic_launcher,
            R.string.open,
            R.string.close
    );
    drawerLayout.setDrawerListener(actionBarDrawerToggle);
    getActionBar().setDisplayHomeAsUpEnabled(true);
    drawerListView.setOnItemClickListener(new DrawerItemClickListener());
}

@Override
protected void onPostCreate(Bundle SaveInstanceState) {
    super.onPostCreate(SaveInstanceState);
    actionBarDrawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    actionBarDrawerToggle.onConfigurationChanged(newConfig);
}

@Override
public boolean onOptionsItemSelected(MenuItem target) {
    if (actionBarDrawerToggle.onOptionsItemSelected(target)) {
        return true;
    }
    return super.onOptionsItemSelected(target);
}

private class DrawerItemClickListener implements ListView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView parent, View v, int pos, long id) {
        Toast.makeText(display.this, ((TextView) v).getText(), Toast.LENGTH_SHORT).show();
        selectItem(pos);
        drawerLayout.closeDrawer(drawerListView);
    }

    private void selectItem(int position) {

        Fragment fragment = null;

        switch (position) {
            case 0:
                break;
            case 1:
                fragment = new test2();
                break;
            case 2:
                fragment = new test3();
                break;
            default:
                break;
        }
        if (fragment != null) {
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction().replace(R.id.drawer_layout, fragment).commit();
            drawerListView.setItemChecked(position, true);
            drawerListView.setSelection(position);
            drawerLayout.closeDrawer(drawerListView);

        } else {
            Log.e("MainActivity", "Error in creating fragment");
        }
    }
}

}

1 个答案:

答案 0 :(得分:0)

如果第一个视图保留在新视图下,则与新片段关联的xml文件可能没有定义背景,而且可能是透明的。

尝试在新视图的根元素中定义android:background

对于片段ID问题,我认为无法恢复ID。您可以将它存储在全局变量中,或者您可以使用字符串标记来识别片段,就像在此处所做的那样:

get the latest fragment in backstack