Fragment的创建以及与activity的参数传递

点击下面不同的TextView变化不同的Fragment

avtivity与Fragment之间传递消息不能使用构造器传递,用bunder传递

首先写一个含有FrameLayout(这个布局最佳),里面最好没有其他的控件的xml:

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     tools:context="com.zzw.testfragment.MainActivity" >
 7
 8     <FrameLayout
 9         android:id="@+id/framelayout"
10         android:layout_width="match_parent"
11         android:layout_height="wrap_content"
12         android:layout_weight="1" >
13     </FrameLayout>
14
15     <LinearLayout
16         android:layout_width="match_parent"
17         android:layout_height="wrap_content"
18         android:orientation="horizontal" >
19
20         <TextView
21             android:id="@+id/weixin"
22             android:layout_width="wrap_content"
23             android:layout_height="match_parent"
24             android:layout_weight="1"
25             android:gravity="center"
26             android:text="军事"
27             android:textColor="@android:color/holo_red_light"
28             android:textSize="30sp" />
29
30         <TextView
31             android:id="@+id/tongxinlu"
32             android:layout_width="wrap_content"
33             android:layout_height="match_parent"
34             android:layout_weight="1"
35             android:gravity="center"
36             android:text="IT"
37             android:textColor="@android:color/holo_green_light"
38             android:textSize="30sp" />
39
40         <TextView
41             android:id="@+id/faxian"
42             android:layout_width="wrap_content"
43             android:layout_height="match_parent"
44             android:layout_weight="1"
45             android:gravity="center"
46             android:text="娱乐"
47             android:textColor="@android:color/holo_orange_light"
48             android:textSize="30sp" />
49
50         <TextView
51             android:id="@+id/me"
52             android:layout_width="wrap_content"
53             android:layout_height="match_parent"
54             android:layout_weight="1"
55             android:gravity="center"
56             android:text="音乐"
57             android:textColor="@android:color/holo_blue_light"
58             android:textSize="30sp" />
59     </LinearLayout>
60
61 </LinearLayout>

写一个每一个界面要显示item.xml:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent" >
 5
 6     <ImageView
 7         android:id="@+id/image"
 8         android:layout_width="wrap_content"
 9         android:layout_height="wrap_content"
10         android:layout_centerInParent="true" />
11
12     <TextView
13         android:id="@+id/textView"
14         android:layout_width="wrap_content"
15         android:layout_height="wrap_content"
16         android:layout_alignParentTop="true"
17         android:layout_centerHorizontal="true"
18         android:textColor="@android:color/holo_red_light"
19         android:textSize="20sp"
20         android:textStyle="bold" />
21
22 </RelativeLayout>

写一个继承Fragment的类:

 1 package com.zzw.testfragment;
 2
 3 import android.app.Fragment;
 4 import android.os.Bundle;
 5 import android.util.Log;
 6 import android.view.LayoutInflater;
 7 import android.view.View;
 8 import android.view.ViewGroup;
 9 import android.widget.ImageView;
10 import android.widget.TextView;
11
12 public class TestFragment extends Fragment {
13     private static final String TAG = "TestFragment";
14     int image_id;
15     String content;
16     @Override
17     public void onCreate(Bundle savedInstanceState) {
18         super.onCreate(savedInstanceState);
19         Bundle b = this.getArguments();
20         image_id = b.getInt("IMAGE");
21         content = b.getString("CONTENT");
22         Log.d(TAG, image_id+"--"+content);
23     }
24
25     @Override
26     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
27         View view = inflater.inflate(R.layout.item_start, null);
28         return view;
29     }
30
31     @Override
32     public void onViewCreated(View view, Bundle savedInstanceState) {
33
34         ImageView image = (ImageView) view.findViewById(R.id.image);
35
36         image.setImageResource(image_id);
37
38         TextView textView = (TextView) view.findViewById(R.id.textView);
39
40         textView.setText(content);
41     }
42
43 }

MainActivity:

 1 package com.zzw.testfragment;
 2
 3 import android.app.Activity;
 4 import android.app.Fragment;
 5 import android.app.FragmentManager;
 6 import android.app.FragmentTransaction;
 7 import android.os.Bundle;
 8 import android.view.View;
 9 import android.view.View.OnClickListener;
10 import junit.framework.Test;
11 import junit.framework.TestResult;
12
13 public class MainActivity extends Activity implements OnClickListener {
14
15     @Override
16     protected void onCreate(Bundle savedInstanceState) {
17         super.onCreate(savedInstanceState);
18         setContentView(R.layout.activity_main);
19
20         load(setFragmentData(R.drawable.a, "000"));
21
22         findViewById(R.id.weixin).setOnClickListener(this);
23         findViewById(R.id.tongxinlu).setOnClickListener(this);
24         findViewById(R.id.faxian).setOnClickListener(this);
25         findViewById(R.id.me).setOnClickListener(this);
26     }
27
28     @Override
29     public void onClick(View v) {
30         switch (v.getId()) {
31         case R.id.weixin:
32             load(setFragmentData(R.drawable.a, "000"));
33             break;
34         case R.id.tongxinlu:
35             load(setFragmentData(R.drawable.d, "1111"));
36             break;
37         case R.id.faxian:
38             load(setFragmentData(R.drawable.zzzz, "222"));
39             break;
40         case R.id.me:
41             load(setFragmentData(R.drawable.ic_launcher, "333"));
42             break;
43         }
44     }
45
46     // 加载Fragment
47     private void load(Fragment fragment) {
48         FragmentManager fm = this.getFragmentManager();
49         FragmentTransaction ft = fm.beginTransaction();
50         ft.replace(R.id.framelayout, fragment);
51         // addToBackStack添加到回退栈,addToBackStack与ft.add(R.id.fragment, new
52         // MyFragment())效果相当
53         // ft.addToBackStack("test");
54         ft.commit();
55     }
56
57     // 设置要传递给Fragment的参数
58     private Fragment setFragmentData(int image_id, String content) {
59         Fragment f = new TestFragment();
60
61         Bundle b = new Bundle();
62         b.putInt("IMAGE", image_id);
63         b.putString("CONTENT", content);
64
65         f.setArguments(b);
66         return f;
67     }
68 }
时间: 2024-10-16 09:09:17

Fragment的创建以及与activity的参数传递的相关文章

activity之间参数传递&amp;&amp;获取activity返回值&amp;&amp;activity生命周期

Activity之间参数传递 A activity想将参数传给B activity时可以利用Intent将消息带过去 Intent intent = new Intent(this,BActivity.class); intent.putExtra("xxxx", "xxxx"); 数据量多的话可以使用 Bundle bundle = new Bundle(); intent.putExtras(bundle); 获取activity返回值 A activity调用

Fragment的生命周期和Activity之间的通信以及使用

Fragment通俗来讲就是碎片,不能单独存在,意思就是说必须依附于Activity,一般来说有两种方式把Fragment加到Activity,分为静态,动态. 静态即为右键单击,建立一个Fragment,选择Blank,在Activity布局中直接加fragment,name属性直接指向之前建立的Fragment,这就添加上了Fragment,这种较为简单. 动态: 我们要做的是在Activity中添加一个Fragment,Fragment中有两个按钮,当按下按钮时分别切换不同的Fragmen

Fragment基础----创建

1,Fragment的目的及应用场景 fragment 是3.0后引入的类,其字面翻译为“碎片”. 目的是将activity划分成许多单元再进行组合,可以根据不同分辨率屏幕,在不同状态下,灵活创建优化UI并提高复用性. 2,Fragment的创建 第一种方式:通过xml标签创建 step 1:创建fragment类继承fragment关系类,其中导包的时候app包为3.0以后使用,v4包可以向下兼容 step 2:在activity的xml文件中添加fragment标签并添加name属性为fra

Android成长日记-Fragment的生命周期与Activity通信

1. public void onAttach(Activity activity) 当Fragment被添加到Activity时候会回调这个方法,并且这个方法只会被回调一次 2. public void onCreate(Bundle saveInstanceState) 创建Fragment的时候被回调,只会被调用一次 3. public void onActivityCreated(Bundle saveInstanceState) 当Fragment所在的Activity启动完成后调用

android开发之Fragment加载到一个Activity中

Fragments 是android3.0以后添加的.主要是为了方便android平板端的开发.方便适应不同大小的屏幕.此代码是为了最简单的Fragment的使用,往一个Activity中添加Fragment,主要涉及的知识点有:1.Fragment类的创建,2.Fragment的添加3.无UI的 Fragment的添加,根据Tag找回Fragment Fragment对应的Xml布局文件, <LinearLayout xmlns:android="http://schemas.andro

android开发(2):多页面的实现 | Fragment的创建与使用

APP中出现多个页面再常见不过了.使用activity与fragment都能实现多页面,这里使用fragment来实现.延续"知音"这个APP的开发,之前已经创建了底部导航条与mainactivity. 首先创建一个fragment,作为"广场"页面.在菜单中new一个fragment出来即可,如下面的截图: 此时会自动生成这个fragment的xml跟类,xml用于界面设计,而fragment类用于界面管理,并被activity类使用,请看截图: 注意,Fragm

如何使用viewpager与fragment写一个app导航activity

今天我们来看一下如何使用viewpager和fragment组合来写一个app导航activity,这里使用到了android开源控件viewpagerindicator,有兴趣的同学可以去它网站上看看它的介绍. 附上效果截图一张: demo中只有一个activity,是用activity_main.xml来布局,其内容如下: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:and

创建多个activity及跳转

说明:在Android应用程序当中创建多个activity,并且启动一个activity的方法,以及activity之间的跳转. 例子:在MainActivity里面添加一个按钮,触动按钮,跳转到SecondActivity. 步骤:1.定义一个类,继承Activity,复写Activity当中的OnCreate方法. package com.away.b_01_multiactivity; import android.app.Activity; import android.os.Bundl

android fragment 重复创建的问题

解决fragment重复创建目前用到有两个方法: 1.fragment同viewpager一起使用: vp.setOffscreenPageLimit(3);//设置缓存页面的个数 2.fragment单独使用: 在onCreateView()方法中加入: if (null == view) { view = inflater.inflate(R.layout.XXX, null); } ViewGroup parent = (ViewGroup)view.getParent(); if (pa