How to connect code with the layout (.xml) after I selected it in a Navigation Drawer?



If I select something in the Navigation Drawer, it switches layouts but how do I bring code behind it?


I normally had different classes and opened them with Intent. So the code was always in the Classfor the specific layout. But now I wan't to navigate through a Navigation Drawer.


First.java: Thats how I navigate now, but how to connect the code from Second.java which is for secondlayout.xml?



private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
private CharSequence mDrawerTitle;
private CharSequence mTitle;
private String[] list = {"first","second","third"};


protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.navigation_drawer);
mTitle = mDrawerTitle = getTitle();

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.left_drawer);

mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
mDrawerList.setAdapter(new ArrayAdapter<String>(this,R.layout.drawer_list_item, list));
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());

getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);

mDrawerToggle = new ActionBarDrawerToggle(this,mDrawerLayout,
R.drawable.ic_drawer,
R.string.drawer_open,
R.string.drawer_close
) {
public void onDrawerClosed(View view) {
getActionBar().setTitle(mTitle);
invalidateOptionsMenu();
}

public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(mDrawerTitle);
invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);

if (savedInstanceState == null) {
selectItem(0);
}
}

private void selectItem(int position){
FrameLayout frameLayout = (FrameLayout) findViewById(R.id.content_frame);
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

if(position == 0){
RelativeLayout myView = (RelativeLayout) inflater.inflate(R.layout.firstlayout, null);
frameLayout.addView(myView);
}else if(position == 1){
RelativeLayout myView = (RelativeLayout) inflater.inflate(R.layout.secondlayout, null);
frameLayout.addView(myView);
}else if(position == 2){
RelativeLayout myView = (RelativeLayout) inflater.inflate(R.layout.thirdlayout, null);
frameLayout.addView(myView);
}
mDrawerList.setItemChecked(position, true);
setTitle(list[position]);
mDrawerLayout.closeDrawer(mDrawerList);
}

private class DrawerItemClickListener implements ListView.OnItemClickListener {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
selectItem(position);
}
}

public void setTitle(CharSequence title) {
mTitle = title;
getActionBar().setTitle(mTitle);
}

protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}

public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}

public boolean onOptionsItemSelected(MenuItem item) {
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}

No comments:

Post a Comment