简体   繁体   English

无法从主要活动加载片段

[英]Unable to Load Fragment from Main Activity

I am trying to load a frame on the Onclicklistener of a Button in the main activity. 我正在尝试在主要活动的按钮的Onclicklistener上加载框架。 In my view I have written all the code correctly of main activity and fragment that requires to attach a fragment to activity. 在我看来,我已经正确编写了主要活动和片段的所有代码,这些代码需要将片段附加到活动上。 But something seems off. 但是似乎有些不对劲。 Appreciate any thoughts or suggestions. 赞赏任何想法或建议。 I have used this link as a reference. 我已将此链接用作参考。 Below are the code details. 以下是代码详细信息。

MainActivity.java 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 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 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 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>

The error is in the main XML file. 错误在主XML文件中。

You root is 你的根是

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

But then the first child have the height fill_parent this makes the first child take all the space of the LinearLayout so when you try to put your fragment in the container, it wont appear in the screen. 但是,第一个孩子的高度为fill_parent这使第一个孩子占据了LinearLayout所有空间,因此当您尝试将片段放入容器时,它不会出现在屏幕上。

Instead try this 而是试试这个

<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" >

Try to get used to use match_parent instead of fill_parent :) 尝试习惯使用match_parent而不是fill_parent :)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM