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


Error de Android SDK: Intentar instanciar una clase que no es un fragmento

Apenas intento crear una aplicación simple con un menú superior y una vista cambiable abajo (presionando los botones en el fragmento del menú cambiamos la vista del fragmento abajo). Así pues, tengo 2 fragmentos dentro de la visión principal pero al intentar funcionar la aplicación en el emulador consigo un error como:

Cause by android.app (bla bla bla, piece of crap Eclipse doesn't even allow copying the errors): Trying to instantiate a class com.example.android.topmenu that is not a fragment 

Por lo tanto, estos son mis diseños XML:

  • Cómo almacenar registros en un archivo txt con android.util.log
  • Cómo establecer la propiedad "android: drawableTop" de un botón en tiempo de ejecución
  • Menú del cajón secundario
  • Android, ¿Cómo enviar correo electrónico HTML y obligar a Android a enviarlo a través de G-Mail, no otras aplicaciones?
  • Cómo crear mi propio SDK para Android
  • Actualización dinámica de un adaptador AutoCompleteTextView
  • Main.xml

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <fragment android:id="@+id/menuFragment" android:layout_width="fill_parent" android:layout_height="wrap_content" android:name="com.example.android.topmenu" > </fragment> <fragment android:id="@+id/contentFragment" android:layout_width="fill_parent" android:layout_height="fill_parent" android:name="com.example.android.bottomcontent" > </fragment> </LinearLayout> 

    Topmenu.xml

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <Button android:id="@+id/Button1" android:layout_width="wrap_content" android:layout_height="match_parent" /> </LinearLayout> 

    Bottom_content.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:padding="10dp" android:orientation="vertical"> <TextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@+string/content_text" /> </LinearLayout> 

    Y estas son las clases para la actividad principal y los fragmentos

    actividad principal

     package com.example.android; import com.example.android.R; import android.app.Activity; import android.content.Context; import android.os.Bundle; public class OLife extends Activity { @Override public void onCreate(Bundle savedInstanceState) { // The activity is being created super.onCreate(savedInstanceState); // Set view setContentView(R.layout.main); } @Override protected void onDestroy() { super.onDestroy(); // The activity is about to be destroyed. super.onDestroy(); // Stop method tracing that the activity started during onCreate() android.os.Debug.stopMethodTracing(); } } 

    menu principal

     package com.example.android; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class OLifeMenu extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.topmenu, container, false); return view; } } 

    Contenido inferior

     package com.example.android; 

    Import android.app.Activity; Import android.os.Bundle; Import android.support.v4.app.Fragment; Import android.view.LayoutInflater; Import android.view.View; Import android.view.ViewGroup;

     public class OLifeMain extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.bottom_content, container, false); return view; } @Override public void onAttach(Activity activity) { super.onAttach(activity); } } 

  • Detección de transmisión HTTP Live en móviles
  • ¿Por qué Android no usa más enums?
  • Si se realiza la llamada onComplete para un Asunto RxJava, ¿tengo que anular la suscripción manualmente de nuevo?
  • Al hacer clic en URL, se abre el navegador predeterminado
  • ¿Alinear los iconos de la barra de herramientas de derecha a izquierda?
  • Android DownloadManager ilegalstateexception no puede crear el directorio
  • 3 Solutions collect form web for “Error de Android SDK: Intentar instanciar una clase que no es un fragmento”

    Debería estar utilizando FragmentActivity lugar de Activity que se debe a que está utilizando Fragmentos de soporte y Fragmentos múltiples en la actividad principal


    Editar

    Ahora puede utilizar la biblioteca de soporte Appcompat y extiende AppCompatActivity para admitir la barra de herramientas y el fragmento para api inferior.

    En mi caso, resultó, estaba haciendo cosas en onCreate en el orden equivocado:

     setContentView(R.layout.activity_qr_code_scan); super.onCreate(savedInstanceState); 

    en lugar de

     super.onCreate(savedInstanceState); setContentView(R.layout.activity_qr_code_scan); 

    Pues usted está utilizando fragmentos en su disposición y le sugiero que extienda su clase de la actividad del fragmento o del fragmento.

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