안녕하세요 끝없는 포럼과 노력 후 안녕하세요, 더 많은 도움이 필요합니다.안드로이드 서랍 및 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;
}
}
혹시 할 수 있었습니까? –
예, 저는 2 가지 활동을 사용하여이 문제를 해결할 수있었습니다 : 1 -지도가있는 서랍. 2 - 다른 창문 프레임이있는 서랍. 두 작업 모두 기본 Drawer 클래스를 상속합니다. –