Android笔记之Fragment初步

1、 要使用fragment,首先需要创建一个类继承

android.app.Fragment;

Fragment1.java(需要给Fragment1配置布局文件f1.xml)

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Fragment1 extends Fragment {

    //初始化Fragment,实例化在Fragment中的成员变量
    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
    }
    
    //给Fragment 加载UI布局,组件例如button,textview等等在这里去初始化
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub //这个布局没有父布局,所以root置空 View view=inflater.inflate(R.layout.f1, null); return view; } }

2、Activity调用

import android.os.Bundle;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.view.Menu;

public class MainActivity extends Activity {

    private FragmentManager manager;
    private FragmentTransaction transaction;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //将activity_main中的某一块换成fragment1
        manager=getFragmentManager();
        transaction=manager.beginTransaction();
        Fragment1 fragment1=new Fragment1();
        //content_frame的内容换成fragment1
        transaction.add(R.id.content_frame, fragment1);
        transaction.commit();
    }

}

3、使用到回退栈

        //加入Fragment回退栈的标志tag
        transaction.add(R.id.content_frame, fragment1,"fragment1");

虽然是在同一个Activity下切换Fragment,但是由于回退栈,不会因为返回键而马上退出Activity,而是返回上一个fragment。

manager.findFragmentByTag(arg0);
manager.findFragmentById(id);

4、涉及到的布局

Activity的布局---》xml包含一个id

注意这样的id一般是一个FrameLayout的布局,里面可以有其他的控件,比如textview等。但是该id不能够使用比如线性布局LinearLayout 等,否则replace之后原先的布局能被露出

Fragment的布局---》xml

 transaction.add(Id, Fragment);

Done!

原文地址:https://www.cnblogs.com/xingyyy/p/3607848.html