Friday, 9 August 2013

inflate myAdapter to myViewPager after clicking a list from the NavigationDrawer

inflate myAdapter to myViewPager after clicking a list from the
NavigationDrawer

I am trying to inflate my Views from myAdapter after clicking an item list
from my NavigationDrawer but after clicking the item from the Navigation
drawer, only my ViewPager is being displayed. It does not inflate the
Views I initialized from myAdapater even though I called setAdapater. Did
I miss something here? I followed the NavigationDrawer tutorial from
developer.android site
package com.usjr.sss.activity;
import java.util.Locale;
import com.usjr.sss.R;
import com.usjr.sss.fragment.InfoTechFirstYearFragment;
import com.usjr.sss.fragment.InfoTechFourthYearFragment;
import com.usjr.sss.fragment.InfoTechSecondYearFragment;
import com.usjr.sss.fragment.InfoTechThirdYearFragment;
import com.usjr.sss.fragment.SubmitSubjectFragment;
import android.app.Activity;
import android.app.SearchManager;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.GravityCompat;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class CourseFragmentActivity extends FragmentActivity {
private DrawerLayout drawerLayout;
private ListView drawerList;
private ActionBarDrawerToggle drawerToggle;
private CharSequence drawerTitle;
private CharSequence mTitle;
private String[] courseTitles;
static SectionPagerAdapter mSectionPagerAdapter;
static ViewPager mViewPager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drawer);
mTitle = drawerTitle = getTitle();
courseTitles = getResources()
.getStringArray(R.array.array_course_cicct);
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
drawerList = (ListView) findViewById(R.id.left_drawer);
// set a custom shadow that overlays the main content when the drawer
// opens
drawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
GravityCompat.START);
// set up the drawer's list view with items and click listener
drawerList.setAdapter(new ArrayAdapter<String>(this,
R.layout.drawer_list_item, courseTitles));
drawerList.setOnItemClickListener(new DrawerItemClickListener());
// enable ActionBar app icon to behave as action to toggle nav drawer
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
// ActionBarDrawerToggle ties together the the proper interactions
// between the sliding drawer and the action bar app icon
drawerToggle = new ActionBarDrawerToggle(this, /* host Activity */
drawerLayout, /* DrawerLayout object */
R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */
R.string.drawer_open, /* "open drawer" description for accessibility */
R.string.drawer_close /* "close drawer" description for accessibility */
) {
public void onDrawerClosed(View view) {
getActionBar().setTitle(mTitle);
invalidateOptionsMenu(); // creates call to
// onPrepareOptionsMenu()
}
public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(drawerTitle);
invalidateOptionsMenu(); // creates call to
// onPrepareOptionsMenu()
}
};
drawerLayout.setDrawerListener(drawerToggle);
if (savedInstanceState == null) {
selectItem(0);
Log.i("onCreate, savedInstanceState",
String.valueOf(savedInstanceState));
}
Log.i("onCreate", "end onCreate");
}// end onCreate
@Override
public void onAttachFragment(Fragment fragment) {
super.onAttachFragment(fragment);
}
@Override
protected void onStart() {
super.onStart();
Log.i("onStart", "end onStart");
}
public class SectionPagerAdapter extends FragmentPagerAdapter {
public SectionPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int arg0) {
Fragment mFragment;
Log.i("switch", "start switch");
switch (arg0) {
case 0:
mFragment = new InfoTechFirstYearFragment();
mFragment.setArguments(null);
return mFragment;
case 1:
mFragment = new InfoTechSecondYearFragment();
mFragment.setArguments(null);
return mFragment;
case 2:
mFragment = new InfoTechThirdYearFragment();
mFragment.setArguments(null);
return mFragment;
case 3:
mFragment = new InfoTechFourthYearFragment();
mFragment.setArguments(null);
return mFragment;
case 4:
mFragment = new SubmitSubjectFragment();
mFragment.setArguments(null);
return mFragment;
default:
return null;
}
}// end getItem
@Override
public int getCount() {
return 5;
}// end getCount
@Override
public CharSequence getPageTitle(int pos) {
Locale l = Locale.getDefault();
switch (pos) {
case 0:
return getString(R.string.first_year).toUpperCase(l);
case 1:
return getString(R.string.second_year).toUpperCase(l);
case 2:
return getString(R.string.third_year).toUpperCase(l);
case 3:
return getString(R.string.fourth_year).toUpperCase(l);
case 4:
return getString(R.string.submit).toUpperCase(l);
}
return null;
}
}// end SectionPagerAdapter
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}// end onCreateOptionsMenu
/* Called whenever we call invalidateOptionsMenu() */
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// If the nav drawer is open, hide action items related to the content
// view
boolean drawerOpen = drawerLayout.isDrawerOpen(drawerList);
menu.findItem(R.id.action_save_subjects).setVisible(!drawerOpen);
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// The action bar home/up action should open or close the drawer.
// ActionBarDrawerToggle will take care of this.
if (drawerToggle.onOptionsItemSelected(item)) {
return true;
}
// Handle action buttons
switch (item.getItemId()) {
case R.id.action_save_subjects:
// create intent to perform web search for this course
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY, getActionBar().getTitle());
// catch event that there's no activity to handle intent
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
} else {
Toast.makeText(this, R.string.app_not_available,
Toast.LENGTH_LONG).show();
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}// end onOptionsItemSelected
/* The click listener for ListView in the navigation drawer */
private class DrawerItemClickListener implements
ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
selectItem(position);
}
}
private void selectItem(int position) {
// update the main content by replacing fragments
mSectionPagerAdapter = new SectionPagerAdapter(
getSupportFragmentManager());
Fragment fragment = new CourseFragment();
Bundle args = new Bundle();
args.putInt(CourseFragment.ARG_POSITION_NUMBER, position);
fragment.setArguments(args);
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.content_frame, fragment).commit();
// update selected item and title, then close the drawer
drawerList.setItemChecked(position, true);
setTitle(courseTitles[position]);
drawerLayout.closeDrawer(drawerList);
Log.i("selectItem() position", String.valueOf(position));
}
@Override
public void setTitle(CharSequence title) {
mTitle = title;
getActionBar().setTitle(mTitle);
}
/**
* When using the ActionBarDrawerToggle, you must call it during
* onPostCreate() and onConfigurationChanged()...
*/
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
drawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Pass any configuration change to the drawer toggles
drawerToggle.onConfigurationChanged(newConfig);
}
/**
* Fragment that appears in the "content_frame"
*/
public static class CourseFragment extends Fragment {
public static final String ARG_POSITION_NUMBER = "course_number";
public CourseFragment() {
// Empty constructor required for fragment subclasses
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// View rootView = container.findViewById(R.layout.sample);
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.sample,
container, false);
int i = getArguments().getInt(ARG_POSITION_NUMBER);
String course = getResources().getStringArray(
R.array.array_course_cicct)[i];
// int imageId = getResources().getIdentifier(
// planet.toLowerCase(Locale.getDefault()), "drawable",
// getActivity().getPackageName());
// ((ImageView) rootView.findViewById(R.id.image))
// .setImageResource(imageId);
getActivity().setTitle(course);
return rootView;
}
@Override
public void onStart() {
super.onStart();
Log.i("onStart", "onStart finished");
}// end onStart
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mViewPager = (ViewPager) getActivity().findViewById(R.id.pagerYear);
mViewPager.setAdapter(mSectionPagerAdapter);
Log.i("onActivityCreated",
"savedInstanceState: " + String.valueOf(savedInstanceState)
+ ". onActivityCreated finish");
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
Log.i("onAttach", "onAttach finished");
}// end onAttach
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
}

No comments:

Post a Comment