0

Hi I want to change view with the drawer selection, it work but the first view stay under the new one...

I have a superimposition of layout...

What Should i do?

Also How can i recover the id of current layout?

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");
        }
    }
}

}

HYH59
  • 1
  • 2

1 Answers1

0

If the first view remains under the new one, maybe the xml file associated with the new fragment doesn't have a background defined and it might be transparent.

Try to define android:background in the root element of the new view.

For the fragment id question, I think it's not possible to recover the id. You could store it in a global variable, or you can use string tags in order to identify the fragments, like it's done here:

get the latest fragment in backstack

Community
  • 1
  • 1
Jofre Mateu
  • 2,390
  • 15
  • 26