Question

I am integrating Navigation drawer menu with Google Map fragement. I have a mapactivity it show the directions path from my start & destination value given in screen1. My mapactivity is showing the directions but while switching to another item in navigation menu my application doesn't shows up the next fragment.give me suggestions about map My MapActivity file as shown in below

    public class MapActivity extends ActionBarActivity {

    private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;
    private ActionBarDrawerToggle mDrawerToggle;
    private SlidingUpPanelLayout slidingUpPanelLayout;
    // nav drawer title
    private CharSequence mDrawerTitle;

    // used to store app title
    private CharSequence mTitle;

    // slide menu items
    private String[] navMenuTitles;
    private TypedArray navMenuIcons;

    private ArrayList<NavDrawerItem> navDrawerItems;
    private NavDrawerListAdapter adapter;

    private int historyPosition;
    SharedPreferences sharedpreferences;

    //Map Items
    LocationManager locManager;
    Drawable drawable;
    Document document;
    GMapV2GetRouteDirection v2GetRouteDirection;
    MarkerOptions markerOptions;
    Location location ;
    private SupportMapFragment fragment;


        //Map Items
        List<Overlay> mapOverlays;

        // Google Map
        private GoogleMap mGoogleMap;
    String value;

    public static  LatLng SOURCE = new LatLng(0,0);
    public static LatLng DESTINATION= new LatLng(0,0);
      double longitude;
      double latitude;





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

         value = getIntent().getStringExtra("KEY");
        setContentView(R.layout.activity_map);

        //Textview intialization
        distancetextView=(TextView)findViewById(R.id.name11);       
        currentSpeedTextView=(TextView)findViewById(R.id.textView2);    
        estimatedDistance=(TextView)findViewById(R.id.textView1);
        estimatedTime=(TextView)findViewById(R.id.textView3);
        mTitle = mDrawerTitle = getTitle();

        // load slide menu items
        navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);

        // nav drawer icons from resources
        navMenuIcons = getResources()
                .obtainTypedArray(R.array.nav_drawer_icons);

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerList = (ListView) findViewById(R.id.list_slidermenu);
        slidingUpPanelLayout=(SlidingUpPanelLayout) findViewById(R.id.sliding_layout);



        navDrawerItems = new ArrayList<NavDrawerItem>();
        // adding nav drawer items to array
        // Home
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1)));
        // Find People
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1)));
        // Photos
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1)));
        // Communities, Will add a counter here
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons.getResourceId(3, -1), true, "22"));
        // Pages
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], navMenuIcons.getResourceId(4, -1)));
        // What's hot, We  will add a counter here
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1), true, "50+"));

        // Recycle the typed array
                navMenuIcons.recycle();

                mDrawerList.setOnItemClickListener(new SlideMenuClickListener());

                // setting the nav drawer list adapter
                adapter = new NavDrawerListAdapter(getApplicationContext(),
                        navDrawerItems);
                mDrawerList.setAdapter(adapter);

                // enabling action bar app icon and behaving it as toggle button
                getSupportActionBar().setDisplayHomeAsUpEnabled(true);
                getSupportActionBar().setHomeButtonEnabled(true);

                mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
                        R.drawable.ic_drawer, //nav menu toggle icon
                        R.string.app_name, // nav drawer open - description for accessibility
                        R.string.app_name // nav drawer close - description for accessibility
                ) {
                    @Override
                    public void onDrawerClosed(View view) {
                        getSupportActionBar().setTitle(mTitle);
                        // calling onPrepareOptionsMenu() to show action bar icons
                        supportInvalidateOptionsMenu();
                    }

                    @Override
                    public void onDrawerOpened(View drawerView) {
                        getSupportActionBar().setTitle(mDrawerTitle);
                        // calling onPrepareOptionsMenu() to hide action bar icons
                        supportInvalidateOptionsMenu();
                    }
                };
                mDrawerLayout.setDrawerListener(mDrawerToggle);


          //Geo Coder 
          Geocoder coder = new Geocoder(this);
            try {
                ArrayList<Address> adresses = (ArrayList<Address>) coder.getFromLocationName(value, 50);
                for(Address add : adresses){
                    if (adresses.size()>0) {//Controls to ensure it is right address such as country etc.
                         longitude = add.getLongitude();
                         latitude = add.getLatitude();
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            DESTINATION=new LatLng(latitude,longitude);

            // check if GPS enabled
            GPSTracker gpsTracker = new GPSTracker(this);
            if (gpsTracker.canGetLocation())
            {
                double Curr_Latitude = gpsTracker.latitude;
                double Curr_Longitude =gpsTracker.longitude;
                SOURCE=new LatLng(Curr_Latitude,Curr_Longitude);
            }
            v2GetRouteDirection = new GMapV2GetRouteDirection();
              SupportMapFragment supportMapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
                mGoogleMap = supportMapFragment.getMap();

                // Enabling MyLocation in Google Map
                mGoogleMap.setMyLocationEnabled(true);
                mGoogleMap.getUiSettings().setZoomControlsEnabled(true);
                mGoogleMap.getUiSettings().setCompassEnabled(true);
                mGoogleMap.getUiSettings().setMyLocationButtonEnabled(true);
                mGoogleMap.getUiSettings().setAllGesturesEnabled(true);
                mGoogleMap.setTrafficEnabled(true);
                mGoogleMap.animateCamera(CameraUpdateFactory.zoomTo(12));
                markerOptions = new MarkerOptions();
                GetRouteTask getRoute = new GetRouteTask();
                getRoute.execute();

         try {
                // Loading map
                initilizeMap();

            } catch (Exception e) {
                e.printStackTrace();
            }






        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.drawer_layout, new PlaceholderFragment()).commit();
        }
    }


      }
    */
    @Override
    protected void onResume() {
        super.onResume();
        initilizeMap();
    }




    /**
    *
    * @author VIJAYAKUMAR M
    * This class Get Route on the map
    *
    */
   private class GetRouteTask extends AsyncTask<String, Void, String> {

         private ProgressDialog Dialog;
         String response = "";
         @Override
         protected void onPreExecute() {
               Dialog = new ProgressDialog(MapActivity.this);
               Dialog.setMessage("Loading route...");
               Dialog.show();
         }

         @Override
         protected String doInBackground(String... urls) {
               //Get All Route values
                    document = v2GetRouteDirection.getDocument(SOURCE, DESTINATION, GMapV2GetRouteDirection.MODE_DRIVING);
                     response = "Success";
               return response;

         }

         @Override
         protected void onPostExecute(String result) {
               mGoogleMap.clear();
               if(response.equalsIgnoreCase("Success")){
               ArrayList<LatLng> directionPoint = v2GetRouteDirection.getDirection(document);
               PolylineOptions rectLine = new PolylineOptions().width(5).color(
                           Color.BLUE);

               for (int i = 0; i < directionPoint.size(); i++) {
                     rectLine.add(directionPoint.get(i));
               }
               // Adding route on the map
               mGoogleMap.addPolyline(rectLine);
               markerOptions.position(DESTINATION);
               markerOptions.draggable(true);
               mGoogleMap.addMarker(markerOptions);
               mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(SOURCE,
                      7));

               String text=v2GetRouteDirection.getTotalDistance(document);
               distancetextView.setText(text);
               MapActivity.estimatedDistance.setText("DISTANCE TRAVELLED "+"0 KM");
               String text1=v2GetRouteDirection.getTotalDuration(document);
               estimatedTime.setText("ESTIMATED TIME "+text1);

               }

               Dialog.dismiss();
         }
   }


  @Override
  protected void onStop() {
        super.onStop();
        finish();
  }

  /**
     * Slide menu item click listener
     * */
    private class SlideMenuClickListener implements
            ListView.OnItemClickListener {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {
            // display view for selected nav drawer item
            System.out.println("--ON SLIDE CLICKED----");
            sharedpreferences = getSharedPreferences("MyPREFERENCES", Context.MODE_PRIVATE);
            historyPosition=sharedpreferences.getInt("historyposition", 0);

             Editor editor = sharedpreferences.edit();
             editor.putInt("historyposition", position);
               editor.commit(); 

             System.out.println("----The Position at which the pointer Picked--"+position);
            System.out.println("----The Position at which the Prev pointer Picked--"+historyPosition);
            if(historyPosition!=position){
                displayView(position);
            }
        }
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.map, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        if (mDrawerToggle.onOptionsItemSelected(item)) {
            return true;
        }
        // Handle action bar actions click
                switch (item.getItemId()) {
                case R.id.action_settings:
                    return true;
                default:
                    return super.onOptionsItemSelected(item);
                }
    }

    /* *
     * Called when invalidateOptionsMenu() is triggered
     */
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        // if nav drawer is opened, hide the action items
        boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
        menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
        return super.onPrepareOptionsMenu(menu);
    }
    /**
     * Diplaying fragment view for selected nav drawer list item
     * */
    private void displayView(int position) {
        // update the main content by replacing fragments

        Fragment fragment = null;
        switch (position) {
        case 0:
            fragment =new HomeFragment(); 
            break;
        case 1:
            fragment = new FindPeopleFragment();
            break;
        case 2:
            fragment = new PhotosFragment();
            break;
        case 3:
            fragment = new CommunityFragment();
            break;
        case 4:
            fragment = new PagesFragment();
            break;
        case 5:
            fragment = new WhatsHotFragment();
            break;

        default:
            break;
        }

        if (fragment != null) {
            FragmentManager fragmentManager = getSupportFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.frame_container, fragment).commit();

            // update selected item and title, then close the drawer
            mDrawerList.setItemChecked(position, true);
            mDrawerList.setSelection(position);
            setTitle(navMenuTitles[position]);
            mDrawerLayout.closeDrawer(mDrawerList);
        } else {
            // error in creating fragment
            Log.e("MainActivity", "Error in creating fragment");
        }
    }

    @Override
    public void setTitle(CharSequence title) {
        mTitle = title;
        getSupportActionBar().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.
        mDrawerToggle.syncState();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        // Pass any configuration change to the drawer toggls
        mDrawerToggle.onConfigurationChanged(newConfig);
    }




    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {

        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_map, container,
                    false);
            return rootView;
        }
    }

}

My map_layout file

<android.support.v4.widget.DrawerLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">



    <!-- Framelayout to display Fragments -->
    <FrameLayout
        android:id="@+id/frame_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />


          <com.vysystems.travelgo.slidinguppanel.SlidingUpPanelLayout
        android:id="@+id/sliding_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="bottom">
        <LinearLayout 
            android:layout_width="match_parent"
            android:layout_height="match_parent">
                         <fragment 
      android:id="@+id/map"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:name="com.google.android.gms.maps.SupportMapFragment"
    />  
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#eeeeee"
            android:orientation="vertical"
            android:clickable="true"
            android:focusable="false">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="68dp"
                android:orientation="horizontal">


                   <TextView
        android:id="@+id/name"
        android:layout_width="0dp"
        android:layout_height="match_parent"
         android:layout_weight="1"
         android:textSize="14sp"
        android:gravity="center_vertical"
        android:text="TOTAL DISTANCE "
         android:paddingLeft="10dp"
        android:textAppearance="?android:attr/textAppearanceLarge" />

                   <TextView
        android:id="@+id/name11"
        android:layout_width="0dp"
        android:layout_height="match_parent"
         android:layout_weight="1"
         android:textSize="14sp"
        android:gravity="center_vertical"
        android:paddingLeft="10dp"
        android:textAppearance="?android:attr/textAppearanceLarge" />

            </LinearLayout>
           <RelativeLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

 <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="24dp"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="24dp"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView2"
        android:layout_marginTop="23dp"
        android:textAppearance="?android:attr/textAppearanceLarge" />




</RelativeLayout>

        </LinearLayout>
    </com.vysystems.travelgo.slidinguppanel.SlidingUpPanelLayout>

    <!-- Listview to display slider menu -->
    <ListView
        android:id="@+id/list_slidermenu"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:divider="@color/list_divider"
        android:dividerHeight="1dp"        
        android:listSelector="@drawable/list_selector"
        android:background="@color/list_background"/>
</android.support.v4.widget.DrawerLayout>
Was it helpful?

Solution

Tabs should be placed along the top of an app, below the action bar - as stated in the android design guidelines.

Please spend some time looking at these guidelines for tabs here (and the rest of the guidelines), they're essential for developing android apps!

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top