Board logo

標題: Fragment (二) [打印本頁]

作者: tonyh    時間: 2018-1-6 16:13     標題: Fragment (二)

本帖最後由 tonyh 於 2018-1-13 13:34 編輯

[attach]3205[/attach]
[attach]3206[/attach]
[attach]3207[/attach]
layout\activity_main.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
  4.     android:layout_height="match_parent"
  5.     tools:context=".MainActivity"
  6.     android:orientation="vertical">

  7.     <FrameLayout
  8.         android:layout_width="fill_parent"
  9.         android:layout_height="0dp"
  10.         android:layout_weight="1"
  11.         android:id="@+id/frame1"
  12.         android:visibility="visible"
  13.         android:orientation="horizontal"></FrameLayout>
  14. </LinearLayout>
複製代碼
layout-land\activity_main.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
  4.     android:layout_height="match_parent"
  5.     tools:context=".MainActivity"
  6.     android:baselineAligned="false">

  7.     <FrameLayout
  8.         android:layout_width="0dp"
  9.         android:layout_height="match_parent"
  10.         android:layout_gravity="center_vertical"
  11.         android:layout_weight="2"
  12.         android:id="@+id/frame1"></FrameLayout>

  13.     <FrameLayout
  14.         android:layout_width="0dp"
  15.         android:layout_height="match_parent"
  16.         android:layout_gravity="center_vertical"
  17.         android:layout_weight="3"
  18.         android:id="@+id/frame2"></FrameLayout>
  19. </LinearLayout>
複製代碼
layout\fragment1.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:orientation="vertical" android:layout_width="match_parent"
  4.     android:layout_height="match_parent"
  5.     android:background="#c0e6ff">

  6.     <Button
  7.         android:layout_width="match_parent"
  8.         android:layout_height="wrap_content"
  9.         android:text="Go to Fragment2"
  10.         android:id="@+id/button1"
  11.         android:layout_gravity="center_horizontal"
  12.         android:textAllCaps="false"
  13.         android:textSize="24sp" />
  14.     <Button
  15.         android:layout_width="match_parent"
  16.         android:layout_height="wrap_content"
  17.         android:text="Go to Fragment3"
  18.         android:id="@+id/button2"
  19.         android:layout_gravity="center_horizontal"
  20.         android:textAllCaps="false"
  21.         android:textSize="24sp" />

  22.     <TextView
  23.         android:layout_width="match_parent"
  24.         android:layout_height="match_parent"
  25.         android:text="This is Fragment1"
  26.         android:id="@+id/textView"
  27.         android:layout_gravity="center_horizontal"
  28.         android:gravity="center"
  29.         android:textSize="28sp"
  30.         android:textColor="@android:color/black"
  31.         android:visibility="visible" />

  32. </LinearLayout>
複製代碼
layout\fragment2.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:orientation="vertical" android:layout_width="match_parent"
  4.     android:layout_height="match_parent"
  5.     android:background="#fed4f4">

  6.     <TextView
  7.         android:layout_width="match_parent"
  8.         android:layout_height="match_parent"
  9.         android:text="This is Fragment2"
  10.         android:id="@+id/textView"
  11.         android:layout_gravity="center_horizontal"
  12.         android:gravity="center"
  13.         android:textSize="28sp"
  14.         android:textColor="@android:color/black"
  15.         android:visibility="visible" />
  16. </LinearLayout>
複製代碼
layout\fragment3.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:orientation="vertical" android:layout_width="match_parent"
  4.     android:layout_height="match_parent"
  5.     android:background="#daffce">

  6.     <TextView
  7.         android:layout_width="match_parent"
  8.         android:layout_height="match_parent"
  9.         android:text="This is Fragment3"
  10.         android:id="@+id/textView"
  11.         android:layout_gravity="center_horizontal"
  12.         android:gravity="center"
  13.         android:textSize="28sp"
  14.         android:textColor="@android:color/black"
  15.         android:visibility="visible" />
  16. </LinearLayout>
複製代碼
MainActivity.java
  1. package org.istak.ch38_fragment;

  2. import android.app.Activity;
  3. import android.app.FragmentTransaction;
  4. import android.os.Bundle;

  5. public class MainActivity extends Activity {

  6.     @Override
  7.     protected void onCreate(Bundle savedInstanceState) {
  8.         super.onCreate(savedInstanceState);
  9.         setContentView(R.layout.activity_main);
  10.         Fragment1 f1 = new Fragment1();
  11.         //FragmentManager fm = getSupportFragmentManager();
  12.         FragmentTransaction ft = getFragmentManager().beginTransaction();
  13.         ft.add(R.id.frame1, f1, null);
  14.         ft.commit();
  15.     }
  16. }
複製代碼
Fragment1.java
  1. package org.istak.ch38_fragment;

  2. import android.app.Fragment;
  3. import android.app.FragmentTransaction;
  4. import android.os.Bundle;
  5. import android.view.LayoutInflater;
  6. import android.view.View;
  7. import android.view.ViewGroup;
  8. import android.widget.Button;

  9. /**
  10. * Created by Tony on 2017/11/14.
  11. */
  12. public class Fragment1 extends Fragment{

  13.     Button btn1,btn2;
  14.     MainActivity activity;

  15.     @Override
  16.     public void onCreate(Bundle savedInstanceState) {
  17.         super.onCreate(savedInstanceState);
  18.         activity= (MainActivity) getActivity();
  19.     }

  20.     @Override
  21.     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

  22.         getFragmentManager().popBackStack();    //彈出最上層的堆棧

  23.         View v=inflater.inflate(R.layout.fragment1,container,false);

  24.         btn1= (Button) v.findViewById(R.id.button1);
  25.         btn2= (Button) v.findViewById(R.id.button2);

  26.         btn1.setOnClickListener(new View.OnClickListener() {
  27.             @Override
  28.             public void onClick(View v) {
  29.                 Fragment2 f2 = new Fragment2();
  30.                 //FragmentManager fm=getFragmentManager();
  31.                 FragmentTransaction ft =getFragmentManager().beginTransaction();
  32.                 if(activity.findViewById(R.id.frame2)!=null)   //若 frame2 存在,則代表此時裝置是橫向擺放的 (橫擺時會自動抓資料夾 layout-land 中的布局)
  33.                 {
  34.                     ft.add(R.id.frame2, f2, null);    //將 f2 加到 frame2 上 (畫面的右側)
  35.                 }else{
  36.                     ft.add(R.id.frame1, f2);         //將 f2 加到 frame1 上 (畫面的左側)
  37.                     ft.addToBackStack(null);         //加入堆疊區,使按 "返回鍵" 能回到下層的堆棧,而不會直接跳出程式
  38.                 }
  39.                 ft.commit();
  40.             }
  41.         });

  42.         btn2.setOnClickListener(new View.OnClickListener() {
  43.             @Override
  44.             public void onClick(View v) {
  45.                 Fragment3 f3 = new Fragment3();
  46.                 FragmentTransaction ft =getFragmentManager().beginTransaction();
  47.                 if(activity.findViewById(R.id.frame2)!=null)
  48.                 {
  49.                     ft.add(R.id.frame2, f3, null);
  50.                 }else{
  51.                     ft.add(R.id.frame1, f3);
  52.                     ft.addToBackStack(null);
  53.                 }
  54.                 ft.commit();
  55.             }
  56.         });
  57.         return v;
  58.     }
  59. }
複製代碼
Fragment2.java
  1. package org.istak.ch38_fragment;

  2. import android.app.Fragment;
  3. import android.os.Bundle;
  4. import android.view.LayoutInflater;
  5. import android.view.View;
  6. import android.view.ViewGroup;

  7. /**
  8. * Created by Tony on 2017/11/14.
  9. */
  10. public class Fragment2 extends Fragment {

  11.     @Override
  12.     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  13.         View v=inflater.inflate(R.layout.fragment2,container,false);
  14.         return v;
  15.     }
  16. }
複製代碼
Fragment3.java
  1. package org.istak.ch38_fragment;

  2. import android.app.Fragment;
  3. import android.os.Bundle;
  4. import android.view.LayoutInflater;
  5. import android.view.View;
  6. import android.view.ViewGroup;

  7. /**
  8. * Created by Tony on 2017/11/14.
  9. */
  10. public class Fragment3 extends Fragment {

  11.     @Override
  12.     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  13.         View v=inflater.inflate(R.layout.fragment3,container,false);
  14.         return v;
  15.     }
  16. }
複製代碼

作者: 李允軒    時間: 2018-1-13 14:22

此帖僅作者可見
作者: 林宇翔    時間: 2018-1-13 16:07

此帖僅作者可見




歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/) Powered by Discuz! 7.2