您好我想用抽屉选择更改视图,它可以工作,但第一个视图保留在新的...
我有一个叠加的布局......
我该怎么办?
另外,我如何恢复当前布局的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");
}
}
}
}
答案 0 :(得分:0)
如果第一个视图保留在新视图下,则与新片段关联的xml文件可能没有定义背景,而且可能是透明的。
尝试在新视图的根元素中定义android:background
。
对于片段ID问题,我认为无法恢复ID。您可以将它存储在全局变量中,或者您可以使用字符串标记来识别片段,就像在此处所做的那样: