簡體   English   中英

無法從主要活動加載片段

[英]Unable to Load Fragment from Main Activity

我正在嘗試在主要活動的按鈕的Onclicklistener上加載框架。 在我看來,我已經正確編寫了主要活動和片段的所有代碼,這些代碼需要將片段附加到活動上。 但是似乎有些不對勁。 贊賞任何想法或建議。 我已將此鏈接用作參考。 以下是代碼詳細信息。

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>

錯誤在主XML文件中。

你的根是

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

但是,第一個孩子的高度為fill_parent這使第一個孩子占據了LinearLayout所有空間,因此當您嘗試將片段放入容器時,它不會出現在屏幕上。

而是試試這個

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

嘗試習慣使用match_parent而不是fill_parent :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM