Android Activity加载Fragment的一般简易方法

Android Activity加载Fragment的一般简易方法


首先写一个布局,布局里面以FrameLayout布局为佳,
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/fragment"
    tools:context="com.example.demo.MainActivity" >
</FrameLayout>


然后在上层java代码中创建Fragment进而replace上面的这个FrameLayout:

package com.example.demo;

import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.activity_main);

		FragmentManager fm = this.getFragmentManager();
		FragmentTransaction ft = fm.beginTransaction();
		ft.replace(R.id.fragment, new MyFragment());

		// addToBackStack添加到回退栈,addToBackStack与ft.add(R.id.fragment, new
		// MyFragment())效果相当
		// ft.addToBackStack("test");

		ft.commit();
	}

	private static class MyFragment extends Fragment {

		@Override
		public void onCreate(Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
		}

		@Override
		public View onCreateView(LayoutInflater inflater, ViewGroup container,
				Bundle savedInstanceState) {
			View view = inflater.inflate(android.R.layout.simple_list_item_1,
					null);
			return view;
		}

		@Override
		public void onViewCreated(View view, Bundle savedInstanceState) {
			TextView text = (TextView) view.findViewById(android.R.id.text1);
			text.setText("hello,world!");
		}
	}
}


如果使用FragmentTransaction的add而不是replace,那么与replcae情况下再加入addToBackStack结果相当。

你可能感兴趣的:(android)