2017-07-04 23 views
0

フラグメントに動的なGoogleマップを追加しようとしていますが、このフラグメントには問題なく動作している単純なフォームが含まれています。ダイナミックGoogleマップでヌルオブジェクト参照エラーが発生する

活性ComponentInfo {com.jdplee.proyecto/com.jdplee.proyecto.ClientDetailActivity}開始できません:java.lang.NullPointerExceptionが:「を仮想メソッドを呼び出すことcom.jdplee.proyecto.ClientDetailFragmentのcom.jdpleeを試み。

public class ClientDetailActivity extends AppCompatActivity { 

    public static final int REQUEST_ADD_TASK = 1; 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.client_detail); 


     ClientDetailFragment mClientDetailFragment = (ClientDetailFragment) 
       getSupportFragmentManager().findFragmentById(R.id.cd_fragment_container); 

     if (mClientDetailFragment == null) { 

      mClientDetailFragment = ClientDetailFragment.newInstance(); 


      utilities.addFragmentToActivity(getSupportFragmentManager(), mClientDetailFragment, R.id.cd_fragment_container); 
     } 
    } 
} 

:nullのオブジェクト参照のproyecto.ClientDetailFragment.newInstanceは()」

何私が持っていることは、この第二のアクティビティを使用して行われ、詳細ビューを開くボタンとmainActivityですclient_la

public class ClientDetailFragment extends Fragment { 

    private static final int PERMISSION_REQUEST_CODE = 1; 
    private FusedLocationProviderClient mFusedLocationProviderClient; 

    public static ClientDetailFragment newInstance() { 
     return new ClientDetailFragment(); 
    } 

    public ClientDetailFragment(){ 
     //required empty constructor 
    } 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View root = inflater.inflate(R.layout.client_detail_fragment, container, false); 

     if (getChildFragmentManager().findFragmentById(R.id.cd_maplocation) == null) { 
      SupportMapFragment mapFragment = new SupportMapFragment(); 

      getChildFragmentManager() 
        .beginTransaction() 
        .replace(R.id.cd_maplocation, mapFragment) 
        .commit(); 
} 

     return root; 
    } 

この断片は内部のGoogleマップのためでframeLayoutを持っている彼のレイアウトを持っています:YOUTは断片のみが置かれようとしているでframeLayoutを持って、フラグメントのクラスがある

<FrameLayout 
     android:id="@+id/cd_maplocation" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1"/> 

ことなぜ私はgetChildFragment()を使用しているのですか?これはすべて意味があります。私は何故エラーが出るのか分からないのですか?

+0

にこの事を置きます。 –

+0

私は、logcatから引用符で間違っていた –

答えて

0

はlogcatを提供してくださいonActivityCreated()

if (getChildFragmentManager().findFragmentById(R.id.cd_maplocation) == null) { 
      SupportMapFragment mapFragment = new SupportMapFragment(); 

      getChildFragmentManager() 
        .beginTransaction() 
        .replace(R.id.cd_maplocation, mapFragment) 
        .commit(); 
    } 
+0

はい、それを働いた、あなたはそれについて少し説明できますか?このメソッドは、フラグメントを作成してframelayoutに配置するアクティビティが作成されたときに呼び出されます。 –

+0

働いている場合は、回答を受け入れてください。親フラグメントの初期化が問題になる前に、別のフラグメント(親)内にフラグメント(子)があり、子を追加/置換しています。 –

+0

答えを編集して補完すると、別の断片のフラグメントが分かります。なぜ、 'getChildFragment'を使用しているのですか? –

関連する問題