Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


App fallando al usar fragmentos

Estoy trabajando con fragmentos y ..

Tengo un problema en mi código que no puedo encontrar.

El logcat señala esta pieza de código, en uno de mis fragmentos:

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

Mi clase principal (la 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(); } } 

Y el 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 

La clase "MainActivity" es muy larga, así que lo pegué usando pasebin:

Http://pastebin.com/Lt3wbNzD

¡Gracias por tu ayuda!

Editar:

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

Muestra un error:

El método add (int, Fragment) en el tipo FragmentTransaction no es aplicable para los argumentos (int, GoogleMap)

3 Solutions collect form web for “App fallando al usar fragmentos”

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

No se puede crear un fragmento dentro de un fragmento utilizando xml. No has publicado el xml para el fragmento, pero supongo que tienes un fragmento de mapa ahí. Todavía puede agregarlo, pero debe agregarlo dinámicamente usando getChildFragmentManager()

Con la biblioteca de soporte debe utilizar FrameLayout en xml como titular de fragmento en lugar de fragmento como este:

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

Tienes que usar eso

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

Usted no tiene padre como él Fragment la transacción.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.