Android SDK erreur en Essayant de les instancier une classe qui n'est pas un fragment
Je suis à peine en essayant de créer une application simple avec un menu en haut et une perspective évolutive ci-dessous (en appuyant sur les boutons dans le menu fragment de nous modifier l'affichage de l'extrait ci-dessous).
Donc, j'ai 2 fragments à l'intérieur de la vue principale, mais lorsque vous essayez d'exécuter l'application dans l'émulateur, j'obtiens une erreur du type:
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
Donc, voici mes layouts XML:
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>
et ce sont les classes de l'activité principale et les fragments
main_activity
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();
}
}
topmenu
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;
}
}
bottomcontent
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);
}
}
- Merci, cela fait. L'API, des tutoriels, des exemples, tout à l'air tellement foiré
- ill mettre comme réponse mais dans l'avenir, les googlers voir.
Vous devez vous connecter pour publier un commentaire.
Vous devriez être en utilisant
FragmentActivity
au lieu deActivity
c'est parce que vous êtes à l'aide de support de Fragments et de multiples Fragments dans votre activité principaleModifier
Vous pouvez maintenant utiliser le Appcompat bibliothèque de prise en charge et s'étend
AppCompatActivity
à l'appui de la barre d'outils et le fragment inférieur de l'api.ActionBarActivity
.Dans mon cas, il s'est avéré, j'étais en train de faire des choses dans
onCreate
dans le mauvais ordre:au lieu de
Que vous êtes à l'aide de fragments de la mise en page et je vous propose de prolonger votre classe à partir de fragment ou un fragment de l'activité.