6

Im正在使用片段和..使用片段時應用程序崩潰

我在我的代碼中遇到問題,我只是找不到。

在這段代碼的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,但我猜你有一個地圖片段。您仍然可以添加,但你需要添加它使用動態getChildFragmentManager()

+0

是的,你是對的。它的地圖。你能幫我添加嗎?我不知道如何使用'getSupportFragmentManager()'.. – NirPes

+0

對不起,類型意味着getChildFragmentManager()。這裏有一個指南:http://developer.android.com/about/versions/android-4.2.html#NestedFragments這對你在fragmentactivity中做的事很簡單 –

+0

Im有麻煩,因爲map是'GoogleMap',而不是一個片段。 @RSenApps我編輯了我的問題。幫助我請。 – NirPes

0

你必須使用

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

你不有父母作爲其片段交易..

+0

我試過了。仍然崩潰。 – NirPes

1

隨着支持庫你應該使用FrameLayout在XML中作爲片段持有人,而不是像這樣的片段:

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

試過了,仍然崩潰。 – NirPes

相關問題