tutorial studio onattach navegar fragments example entre ejemplo activity android android-fragments

onattach - navegar entre fragments android studio



RuntimeException: error al inflar el fragmento de clase (8)

La forma correcta será

<fragment android:id="@+id/fragment1" android:layout_width="match_parent" android:layout_height="wrap_content" android:name="com.samplefragsapplication.SuggestionFrags" />

UPD: a juzgar por la salida de logcat, no tienes fragmentos disponibles. Si está ejecutando un Android pre-Honeycomb (pero> = 1.6), puede usar la biblioteca de compatibilidad . Los fragmentos fueron introducidos en 3.0.

Obtengo una excepción runtimeException con el siguiente código, ¿alguien sabe por qué?

public class FragsApplicationActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }

Clase SuggestionFrags

public class SuggestionFrags extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub return super.onCreateView(inflater, container, savedInstanceState); } }

main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <fragment android:id="@+id/fragment1" android:layout_width="match_parent" android:layout_height="wrap_content" class="com.samplefragsapplication.SuggestionFrags" /> </LinearLayout>

Estoy recibiendo esta excepción:

11-23 18:09:23.899: E/AndroidRuntime(2436): FATAL EXCEPTION: main 11-23 18:09:23.899: E/AndroidRuntime(2436): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.samplefragsapplication/com.samplefragsapplication.FragsApplicationActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment 11-23 18:09:23.899: E/AndroidRuntime(2436): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 11-23 18:09:23.899: E/AndroidRuntime(2436): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 11-23 18:09:23.899: E/AndroidRuntime(2436): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 11-23 18:09:23.899: E/AndroidRuntime(2436): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 11-23 18:09:23.899: E/AndroidRuntime(2436): at android.os.Handler.dispatchMessage(Handler.java:99) 11-23 18:09:23.899: E/AndroidRuntime(2436): at android.os.Looper.loop(Looper.java:123) 11-23 18:09:23.899: E/AndroidRuntime(2436): at android.app.ActivityThread.main(ActivityThread.java:4627) 11-23 18:09:23.899: E/AndroidRuntime(2436): at java.lang.reflect.Method.invokeNative(Native Method) 11-23 18:09:23.899: E/AndroidRuntime(2436): at java.lang.reflect.Method.invoke(Method.java:521) 11-23 18:09:23.899: E/AndroidRuntime(2436): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 11-23 18:09:23.899: E/AndroidRuntime(2436): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 11-23 18:09:23.899: E/AndroidRuntime(2436): at dalvik.system.NativeStart.main(Native Method) 11-23 18:09:23.899: E/AndroidRuntime(2436): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class fragment 11-23 18:09:23.899: E/AndroidRuntime(2436): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576) 11-23 18:09:23.899: E/AndroidRuntime(2436): at android.view.LayoutInflater.inflate(LayoutInflater.java:385) 11-23 18:09:23.899: E/AndroidRuntime(2436): at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 11-23 18:09:23.899: E/AndroidRuntime(2436): at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 11-23 18:09:23.899: E/AndroidRuntime(2436): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198) 11-23 18:09:23.899: E/AndroidRuntime(2436): at android.app.Activity.setContentView(Activity.java:1647) 11-23 18:09:23.899: E/AndroidRuntime(2436): at com.samplefragsapplication.FragsApplicationActivity.onCreate(FragsApplicationActivity.java:12) 11-23 18:09:23.899: E/AndroidRuntime(2436): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 11-23 18:09:23.899: E/AndroidRuntime(2436): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 11-23 18:09:23.899: E/AndroidRuntime(2436): Caused by: java.lang.ClassNotFoundException: android.view.fragment in loader dalvik.system.PathClassLoader[/data/app/com.samplefragsapplication-2.apk] 11-23 18:09:23.899: E/AndroidRuntime(2436): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 11-23 18:09:23.899: E/AndroidRuntime(2436): at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 11-23 18:09:23.899: E/AndroidRuntime(2436): at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 11-23 18:09:23.899: E/AndroidRuntime(2436): at android.view.LayoutInflater.createView(LayoutInflater.java:466) 11-23 18:09:23.899: E/AndroidRuntime(2436): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:544) 11-23 18:09:23.899: E/AndroidRuntime(2436): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66) 11-23 18:09:23.899: E/AndroidRuntime(2436): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)


Si vas a usar Fragments necesitas extender FragmentActivity no Activity .


Para solucionar este problema, debe extenderse desde FragmentActivity en lugar de Activity en FragsApplicationActivity.


La excepción android.view.InflateException: Binary XML file line: #... Error inflating class fragment Puede getActivity() android.view.InflateException: Binary XML file line: #... Error inflating class fragment si manipula con getActivity() dentro de su fragmento antes de onActivityCreated() . En tal caso, recibe una referencia de actividad incorrecta y no puede confiar en eso.

Por ejemplo, el siguiente patrón es incorrecto:

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View view = inflater.inflate(R.layout..., container, false); Button button = getActivity().findViewById(R.id...); button.setOnClickListener(...); - another problem: button is null return view; }


Acabo de tener el mismo problema, y ​​lo que encontré fue que en mi main.xml estaba haciendo referencia incorrectamente a la clase de fragmento.

En lugar de:

<fragment android:id="@+id/frag_capt" android:layout_width="match_parent" android:layout_height="match_parent" android:name="com.company.test.applicationname.fragmentname" />

tratar:

<fragment android:id="@+id/frag_capt" android:layout_width="match_parent" android:layout_height="match_parent" android:name="com.company.test.DetailFrag" />

Esto solucionó el problema para mí. Buena suerte.


Asegúrese de que android: name = "className" sea el primer parámetro en la lista

ex

<fragment android:name="com.name.first" android:id="@+id/" android:layout_width="fill_parent" android:layout_height="fill_parent" />


Prueba esto

<fragment android:id="@+id/fragment1" android:name="com.google.android.gms.maps.SupportMapFragment" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerHorizontal="true" />


Tuve el mismo problema, para resumir:

  • Extender desde FragmentActivity
  • Sigue esta estructura en tu diseño

    <fragment android:id="@+id/map" android:layout_width="match_parent" android:layout_height="wrap_content" android:name="com.google.android.gms.maps.MapFragment" />