6

フラグメントと作業しているIm ..フラグメントを使用するとアプリケーションがクラッシュする

Iveは自分のコードで問題が見つかりました。

コードのこの部分でlogcatポイント、私の断片の一つで:

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

私のメインクラス(FragmentActivity):

import android.app.Activity; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentTransaction; 
import android.view.View; 

public class Fragments extends FragmentActivity { 

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

     MainActivity fragment = new MainActivity(); 
     FragmentTransaction transaction = getSupportFragmentManager() 
       .beginTransaction(); 
     transaction.add(R.id.fragment_place, fragment); 
     transaction.commit(); 
    } 

    public void onSelectFragment(View view) { 

     Fragment newFragment; 

     if (view == findViewById(R.id.add)) { 
      newFragment = new Add(); 
     } else if (view == findViewById(R.id.map)) { 
      newFragment = new MainActivity(); 
     } else { 
      newFragment = new MainActivity(); 
     } 

     FragmentTransaction transaction = getSupportFragmentManager() 
       .beginTransaction(); 
     transaction.replace(R.id.fragment_place, newFragment); 
     transaction.addToBackStack(null); 
     transaction.commit(); 
    } 

} 

とlogcat:

09-30 00:02:52.363: E/AndroidRuntime(32284): FATAL EXCEPTION: main 
09-30 00:02:52.363: E/AndroidRuntime(32284): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.free/com.example.free.Fragments}: android.view.InflateException: Binary XML file line #8: Error inflating class fragment 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2185) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2210) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.app.ActivityThread.access$600(ActivityThread.java:142) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.os.Handler.dispatchMessage(Handler.java:99) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.os.Looper.loop(Looper.java:137) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.app.ActivityThread.main(ActivityThread.java:4931) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at java.lang.reflect.Method.invokeNative(Native Method) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at java.lang.reflect.Method.invoke(Method.java:511) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at dalvik.system.NativeStart.main(Native Method) 
09-30 00:02:52.363: E/AndroidRuntime(32284): Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class fragment 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at com.example.free.MainActivity.onCreateView(MainActivity.java:124) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1478) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:556) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1163) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.app.Activity.performStart(Activity.java:5018) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148) 
09-30 00:02:52.363: E/AndroidRuntime(32284): ... 11 more 
09-30 00:02:52.363: E/AndroidRuntime(32284): Caused by: java.lang.ClassCastException: com.google.android.gms.maps.MapFragment cannot be cast to android.support.v4.app.Fragment 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.support.v4.app.Fragment.instantiate(Fragment.java:402) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.support.v4.app.Fragment.instantiate(Fragment.java:377) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:277) 
09-30 00:02:52.363: E/AndroidRuntime(32284): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676) 
09-30 00:02:52.363: E/AndroidRuntime(32284): ... 24 more 

"MainActivity"クラスは非常に長いので、pasebinを使用してペーストしました:

http://pastebin.com/Lt3wbNzD

ありがとうございました!

編集:

private GoogleMap map; 

FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); 
     transaction.add(R.id.map, map).commit(); 

それがエラーを示しています

The method add(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, GoogleMap)

答えて

2
Caused by: java.lang.ClassCastException: com.google.android.gms.maps.MapFragment cannot be cast to android.support.v4.app.Fragment 

は、XMLを使用してフラグメントの内部フラグメントを作成することはできません。あなたはフラグメントのXMLを投稿していませんが、そこにマップフラグメントがあると思います。で...

+0

はい、そうです。その地図。あなたはそれを追加することができますか?私は 'getSupportFragmentManager()'を使う方法がわかりません。 – NirPes

+0

残念なタイプはgetChildFragmentManager()を意味します。ここにガイドがあります:http://developer.android.com/about/versions/android-4.2.html#NestedFragmentsあなたがあなたの断片化度で行ったことは非常に簡単です –

+0

マップは「GoogleMap」で断片ではありません。 @RSenApps Iveは私の質問を編集しました。私を助けてくださいpls。 – NirPes

0

を使って動的に追加する必要がありますサポートライブラリでは、フラグメントホルダの代わりにxmlのFrameLayoutをフラグメントの代わりに使用する必要があります。

<FrameLayout android:id="@+id/fragment_place" ... /> 
+0

私はこれを試しました。まだクラッシュします。 – NirPes

1

をあなたはまだそれを追加することができますが、あなたはそれフラグメントトランザクションとして親を持つ `tを

return inflater.inflate(R.layout.activity_main,null);

こと使用する必要がgetChildFragmentManager()

+0

それを試しても、まだクラッシュします。 – NirPes

関連する問題