2014-07-23 1 views
0

J'essaie de charger un cadre sur le Onclicklistener d'un bouton dans l'activité principale. À mon avis, j'ai écrit tout le code correctement de l'activité principale et le fragment qui nécessite d'attacher un fragment à l'activité. Mais quelque chose semble éteint. Appréciez toutes les pensées ou suggestions. J'ai utilisé this link comme référence. Voici les détails du code.Impossible de charger le fragment de l'activité principale

MainActivity.java

import android.annotation.TargetApi; 
    import android.os.Build; 
    import android.os.Bundle; 
    import android.support.v4.app.FragmentActivity; 
    import android.support.v4.app.FragmentManager; 
    import android.support.v4.app.FragmentTransaction; 
    import android.support.v7.app.ActionBar; 
    import android.view.Menu; 
    import android.view.MenuInflater; 
    import android.view.MenuItem; 
    import android.view.View; 
    import android.view.View.OnClickListener; 
    import android.widget.Button; 

public class MainActivity extends FragmentActivity { 


@TargetApi(Build.VERSION_CODES.HONEYCOMB) 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final android.app.ActionBar actionBar = getActionBar(); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 


    Button btnLoad = (Button) findViewById(R.id.Button01); 

    OnClickListener listener = new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
     FragmentManager fragmentManager = getSupportFragmentManager(); 
      FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 

      AboutFragment mAboutFragment = new AboutFragment(); 
      fragmentTransaction.add(R.id.fragment_container, mAboutFragment,"About"); 
      fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
      fragmentTransaction.commit(); 
     } 
    }; 

    btnLoad.setOnClickListener(listener); 

} 


} 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <Button 
     android:id="@+id/Button01" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/title_about" 
     android:minHeight="92dp" 
     android:layout_marginTop="40dp" 
     android:layout_marginLeft="40dp" 
     android:textSize="22sp"></Button> 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/title_report" 
     android:id="@+id/Button02"   
     android:minHeight="92dp" 
     android:textSize="22sp" 
     android:layout_marginTop="40dp" 
     android:layout_marginLeft="80dp" 
     android:layout_toRightOf="@+id/Button01"></Button> 
    </RelativeLayout> 
     <FrameLayout 
       android:id="@+id/fragment_container" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" > 

     </FrameLayout> 

</LinearLayout> 

AboutFragement.jave

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

public class AboutFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
      View view = inflater.inflate(R.layout.about_fragment_main, container, false); 

      return view; 
    } 

} 

about_fragement_main.xml

LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:orientation="vertical" > 

      <TextView android:id="@+id/about_textview" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:layout_gravity="center" 
     android:paddingTop="30px" 
     android:text="header text" 
     android:textStyle="bold|italic"/> 

      <TextView 
      android:id="@+id/text1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentTop="true" 
      android:text="text here" /> 

     <TextView android:id="@+id/about_textview2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:layout_gravity="center" 
     android:text="zariya mission" 
     android:textStyle="bold|italic"/> 

      <TextView 
      android:id="@+id/text2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentTop="true" 
      android:paddingTop="10px" 
      android:text="text here" /> 


      <TextView android:id="@+id/about_textview3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:layout_gravity="center" 
     android:text="zariya vision" 
     android:textStyle="bold|italic"/> 

      <TextView 
      android:id="@+id/text3" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentTop="true" 
      android:paddingTop="10px" 
      android:text="text here" /> 

      <TextView android:id="@+id/about_textview4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:layout_gravity="center" 
     android:text="zariya values" 
     android:textStyle="bold|italic"/> 

      <TextView 
      android:id="@+id/text4" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentTop="true" 
      android:paddingTop="10px" 
      android:text="sometezt." /> 

</LinearLayout> 

Répondre

1

L'erreur est dans le fichier XML principal.

Vous racine est

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 

Mais le premier enfant a la hauteur fill_parent ce qui rend le premier enfant prend tout l'espace de l'LinearLayout donc quand vous essayez de mettre votre fragment dans le conteneur, il semble wont dans l'écran.

Essayez plutôt ce

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

    .... 

    <FrameLayout 
     android:id="@+id/fragment_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

Essayez de vous habituer à utiliser match_parent au lieu de fill_parent :)

+1

travaillé comme un charme. Merci beaucoup pour votre suggestion rapide. Je vais en lire plus sur match_parent vs fill_parent. La raison pour laquelle j'ai utilisé fill_parent était que je voulais que le frager prenne tout l'espace et supprime la disposition Relative. Je l'ai finalement atteint en réglant Visibilité sur GONE. Mais je suppose que c'est secondaire, je vais y travailler. Encore merci beaucoup! – Akshay

Questions connexes