2014-09-01 4 views
1

안녕하세요 끝없는 포럼과 노력 후 안녕하세요, 더 많은 도움이 필요합니다.안드로이드 서랍 및 Google지도

내 앱에서 두 가지 기능을 결합해야합니다. 1. Android 서랍. 2. Google지도.

생각

그래서 질문은 무엇이 최선인지는 ... 내 응용 프로그램의 "기본"화면이 맵이며, 서랍 등을 설정, 개인 파일로 변경하는 데 도움 것입니다 그들을 결합하는 방법? 나는 내가지도로 돌아갈 때마다지도를 다시 열고 싶지 않다는 것을 의미한다 (나는지도를위한 데이터베이스를 가지고 매번 다시로드하고 싶지 않다). 그리고 서랍이 모든 화면에 나타나기를 바랍니다.

아이디어가 있으십니까?

지금까지 내 코드 : 주요 활동의 XML (이름에 빈 페이지가 다른 조각을 제외하고) :

<?xml version="1.0"?> 
    <android.support.v4.widget.DrawerLayout android:layout_height="match_parent" android:layout_width="match_parent" android:id="@+id/drawer_layout" xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- <?xml version="1.0" encoding="utf-8"?> <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" android:name="com.google.android.gms.maps.MapFragment"/> --> 
    <FrameLayout android:layout_height="match_parent" android:layout_width="match_parent" android:id="@+id/content_frame"/> 
    <ListView android:layout_height="match_parent" android:layout_width="240dp" android:id="@+id/left_drawer" android:background="#fff" android:dividerHeight="0dp" android:divider="@android:color/transparent" android:choiceMode="singleChoice" android:layout_gravity="start"/> 
    </android.support.v4.widget.DrawerLayout> 

Main activity class: 

    //import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.MapFragment; 
//import com.google.android.gms.maps.model.CameraPosition; 

import android.app.Activity; 
import android.app.Fragment; 
import android.app.FragmentManager; 
import android.os.Bundle; 
import android.support.v4.widget.DrawerLayout; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.Toast; 
import android.view.View; 

public class MapActivity extends Activity{ 

    public static FragmentManager fragmentManager; 
    Fragment map = null; 
    String[] menu; 
    DrawerLayout dLayout; 
    ListView dList; 
    ArrayAdapter<String> adapter; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_map); 
     fragmentManager = getFragmentManager(); 
     menu = new String[]{"Home","Android","Windows","Linux","Raspberry Pi","WordPress","Videos","Contact Us"}; 
     dLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
     dList = (ListView) findViewById(R.id.left_drawer); 
     adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,menu); 
     dList.setAdapter(adapter); 
     dList.setSelector(android.R.color.holo_blue_dark); 
     dList.setOnItemClickListener(new OnItemClickListener(){ 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View v, int position, long id) { 
       dLayout.closeDrawers(); 
       Bundle args = new Bundle(); 
       args.putString("Menu", menu[position]); 
       Fragment detail = new DetailFragment(); 

        if(position == 0){ 
    //      if(map == null){ 
           map = new MyMapFragment(); 
    //      } 
         detail = map; 
        } 
        detail.setArguments(args); 
        FragmentManager fragmentManager = getFragmentManager(); 
      fragmentManager.beginTransaction().replace(R.id.content_frame,detail).commit(); 
        } 
      }); 
     } 
    } 

지도 조각 XML :

<?xml version="1.0"?> 

<fragment android:layout_height="match_parent" android:layout_width="match_parent" class="com.google.android.gms.maps.MapFragment" android:id="@+id/map"/> 

</RelativeLayout> 

지도 조각 클래스 :

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.MapFragment; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.BitmapDescriptorFactory; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.Marker; 
import com.google.android.gms.maps.model.MarkerOptions; 

import android.app.Fragment; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Toast; 

    public class MyMapFragment extends Fragment{ 

    static final LatLng HAMBURG = new LatLng(53.558, 9.927); 
    static final LatLng KIEL = new LatLng(53.551, 9.993); 
    private GoogleMap googleMap; 

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

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

    private void setUpMapIfNeeded() { 
     if(googleMap == null){ 
      googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 
     } 
     setUpMap(); 
    } 

    private void setUpMap(){ 
     Marker hamburg = googleMap.addMarker(new MarkerOptions().position(HAMBURG) 
       .title("Hamburg")); 
     Marker kiel = googleMap.addMarker(new MarkerOptions() 
     .position(KIEL) 
     .title("Kiel") 
     .snippet("Kiel is cool") 
     .icon(BitmapDescriptorFactory 
       .fromResource(R.drawable.ic_launcher))); 
     // Move the camera instantly to hamburg with a zoom of 15. 
     googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(HAMBURG, 15)); 

     // Zoom in, animating the camera. 
     googleMap.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     if(googleMap != null){ 
      MapActivity.fragmentManager.beginTransaction().remove(MapActivity.fragmentManager.findFragmentById(R.id.map)).commit(); 
      googleMap = null; 
     } 
    } 
+0

혹시 할 수 있었습니까? –

+0

예, 저는 2 가지 활동을 사용하여이 문제를 해결할 수있었습니다 : 1 -지도가있는 서랍. 2 - 다른 창문 프레임이있는 서랍. 두 작업 모두 기본 Drawer 클래스를 상속합니다. –

답변

1

지도가있는 1 개의 서랍을 사용하여이 문제를 해결할 수있었습니다. 2 다른 창문 용 프레임이있는 서랍. 두 작업 모두 기본 Drawer 클래스를 상속합니다.

+0

awesome .... 당신이 그것을 한 코드를 공유 할 수 있습니까? 당신의 도움에 감사드립니다 –

+0

정말 유감입니다, 나는 잠시 여기에 없었습니다. 당신은 여전히 ​​해결책이 필요합니까? –

+0

시간 제한에 대한 아이디어를 끊어야하고 솔루션을 보는 것을 좋아합니다 ... –

관련 문제