0
이미 액티비티에 추가하고 커밋 한 조각에서 SupportMapFragment를 가져 오려고 할 때 가끔 NPE가 발생합니다. 예를 들어, 내 코드가 같은 경우 :FragmentTransactions null 포인터 예외
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
if (savedInstanceState == null) {
fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().add(R.id.content_frame, fragmentMapa).commit();
fragmentManager.executePendingTransactions();
}
... //non-related code...
setMapFragment();
}
setMapFragment(){
mapa = ((SupportMapFragment) fragmentManager.findFragmentById(R.id.map)).getMap();
}
내가 코드의 mapa
라인에 NPE를 얻을. 그게 이상한 원인이 내가 라인을 onPostExecute()
asyncTask (1 또는 2 초 정도 소요) 메서드로 이동하면 제대로 작동하기 때문에 트랜잭션을 실행하는 데 몇 초가 걸릴 것이라고 생각합니다. 그래서 내가 executePendingTransactions()
을 사용하고 있지만 아무것도하지 않는 것처럼 보입니다.
트랜잭션이 아직 완료되지 않은 경우이 NPE를 피하기 위해 조각을 어떻게 사용해야합니까?
할 전화? 나는 그것을하려하지만 여전히 NPE를 얻고있다 : FragmentManager fm = HomeActivity.this.getSupportFragmentManager(); \t mapa = ((SupportMapFragment) fm.findFragmentById (R.id.map)). getMap(); – moictab
이상한 것은 어쨌든 코드가 나중에지도를 얻는다면 완벽하게 작동한다는 것입니다. – moictab
아니요, onCreateView 내부의 조각에지도 객체가 포함 된 XML을 부 풀린 뷰가 있습니다. findViewById는 내가 말한 것처럼해야합니다. –