点击下面不同的TextView变化不同的Fragment
images/loading.gif' data-original="http://images2015.cnblogs.com/blog/822717/201511/822717-20151120162901905-85079940.png" />
avtivity与Fragment之间传递消息不能使用构造器传递,用bunder传递
首先写一个含有FrameLayout(这个布局最佳),里面最好没有其他的控件的
1 <LinearLayout ="http://schemas.android.com/apk/res/android" 2 ="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 <LinearLayout16 android:layout_width="match_parent"17 android:layout_height="wrap_content"18 android:orientation="horizontal" >19 20 <TextView21 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 <TextView31 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 <TextView41 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 <TextView51 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.
1 <??> 2 <RelativeLayout ="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 <TextView13 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 @Override17 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 @Override26 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 @Override32 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 @Override16 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 @Override29 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 // 加载Fragment47 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, new52 // 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 }
原标题:Fragment的创建以及与activity的参数传递
关键词: