Android Fragment 多标签应用


1、使用Fragment 可以方便的替代TabActivity、ViewGroup

2、同时也省去了在AndroidManifest.xml文件中 添加相应的Activity 

3、Fragment 是3.0之后的功能,如果想向下兼容我们在导包时一定要注意了,该导入 import android.support.v4.app.FragmentActivity; 而不是 import android.app.Fragment;

4、同时向下兼容我们的Activity 要继承 FragmentActivity 而不是 Activity 

5、核心代码:

package com.example.testdialog;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

@SuppressLint("NewApi")
public class MainActivity extends FragmentActivity implements OnClickListener {
    private TextView tab1 = null;
    private TextView tab2 = null;
    private FragmentManager fm = null;
    private FragmentTransaction ft = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById();
        fm = getSupportFragmentManager();

    }

    private void findViewById() {
        this.tab1 = (TextView) this.findViewById(R.id.tab1);
        this.tab2 = (TextView) this.findViewById(R.id.tab2);
        this.tab1.setOnClickListener(this);
        this.tab2.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {

        ft = fm.beginTransaction();
        switch (v.getId()) {
        case R.id.tab1:
            ft.replace(R.id.content, new MyFragment1());
            break;
        case R.id.tab2:
            ft.replace(R.id.content, new MyFragment2());
            break;
        default:
            break;
        }
        ft.commit();
    }

}


activity_main.xml 文件:

<LinearLayout 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:orientation="vertical"
    tools:context=".MainActivity" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/tab1"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="Tab1" />

        <TextView
            android:id="@+id/tab2"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="Tab2" />

        <TextView
            android:id="@+id/tab3"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="Tab3" />

        <TextView
            android:id="@+id/tab4"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="Tab2" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="20dip"
        android:orientation="horizontal" >
    </LinearLayout>

</LinearLayout>


MyFragment1.java 

package com.example.testdialog;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

@SuppressLint("NewApi")
public class MyFragment1 extends Fragment {
    private Button button1 = null;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment1, null);
        button1 = (Button) view.findViewById(R.id.button1);
        return view;
    }

}


6、这样我们就可以在相应的 Fragment 中做我们的UI设计了

原文地址:https://www.cnblogs.com/keanuyaoo/p/3268781.html