Android 애플리케이션에서 Google 맵의 유형을 변경하는 데 문제가 있습니다. 기본적인 작업 표시 줄 메뉴가 있고 작업 표시 줄에서 올바른 옵션을 선택하면지도가 내 활동의 단편으로 배치됩니다. 여기 내 코드입니다 :MapFragment 런타임에 setMapType을 시도 할 때 런타임에 앱이 다운 됨
package com.example.where2go;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends FragmentActivity {
private MahMapFrag mapFragment;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
initializeMap();
} catch (Exception e) {e.printStackTrace();}
}
private boolean initializeMap() {
if (mapFragment == null) {
mapFragment = new MahMapFrag();
// check if map is created successfully or not
try{
if (mapFragment == null) {
Toast.makeText(getApplicationContext(),
"Sorry! unable to create maps", Toast.LENGTH_SHORT)
.show();
return false;
}
else {
Log.d("MLOGS", "Map Intitialized");
return true;
}
} catch(Exception e) {
e.printStackTrace();
}
}
return false;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.action_map:
getFragmentManager().beginTransaction().replace(android.R.id.content,mapFragment).commit();
break;
default:
return false;
}
return true;
}
}
그리고이 MapFragment가 확장 내 클래스 : 라인
this.getMap().setMapType(GoogleMap.MAP_TYPE_SATELLITE);
이 주석
package com.example.where2go;
import android.util.Log;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
public class MahMapFrag extends MapFragment {
public MahMapFrag() {
Log.d("MLOGS", "CONSTRUCT");
//this.getMap().setMapType(GoogleMap.MAP_TYPE_SATELLITE);
}
}
를 앱이 (보인다) 실행 부드럽게. 하지만 라인이 주석 처리되지 않은 경우 생성자에서지도의 유형을 변경하려고하면 액션 바를 클릭 할 때 앱이 다운됩니다.이 호출은 내비게이션 바를 클릭하면 호출됩니다.이 호출은
getFragmentManager().beginTransaction().replace(android.R.id.content,mapFragment).commit();
입니다.
com.where2go.MainActivity.onOptionItemSelected
에 널 포인터 예외가 있습니다. 지도 유형을 설정할 때 mapFragment가 null 인 이유를 알아 내는데 몇 시간을 시도했습니다.
누군가이 문제에 대한 단서 및/또는 설명을 줄 수 있습니까? 정말 이해하고 싶습니다, 나는 더 많은 안드로이드 개발에 중요한 무엇인가를 놓치고 있다는 느낌이 들기 때문에 ...
나는 Google Play 서비스가 설치된 eclipse Juno와 Genymotion을 사용하고 API 19로 컴파일합니다.
는
Qoya
맵보기 (Map View)가로드 될 때까지 기다려야 할 수도 있습니다이를 추가 할 수 있습니다. Fragment의 onActivityCreated 메소드에서 MapType을 호출하여 작동하는지 확인하십시오. – StuStirling