android之Fragment使用

本文介绍如何使用 Android 的 Fragment 来实现 Tab 之间的切换功能,通过一个简单的示例应用展示了如何创建多个 Fragment 并在它们之间进行切换。文章提供了完整的代码实现,包括 Activity 和 Fragment 的设置、界面布局及按钮样式调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个是上一篇的扩展,做的东西是一样的,只是效果不同

上一篇:android之左右滑动切换activity

http://blog.youkuaiyun.com/i_do_can/article/details/50411600

个人感觉使用那么多activity好麻烦,所以使用Fragment实现,代码实现,代码简单了,就是少了左右滑动的效果,看个人喜好吧

看一下完成后的图片:



再看一下代码结构:只有两个acvitity,其实可以做到只有一个,万一有人不会按钮跳转呢,所以留着做欢迎界面

界面很丑,不要嫌弃,只是实现功能而已


MainAvtivity里就几句话:

findViewById(R.id.main_btn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, TestActivity.class);
                startActivity(intent);
            }
        });
TestActivity需要extends FragmentActivity ,看一下代码:

package android.cl.com.uitest;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.widget.RadioGroup;


public class TestActivity extends FragmentActivity {

    private Fragment fragment;
    private RadioGroup myTabRg;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);

        initView();

    }

    public void initView(){

        fragment = new TestFragment();
        getSupportFragmentManager().beginTransaction().replace(R.id.main_content, fragment).commit();
        myTabRg = (RadioGroup) findViewById(R.id.tab_menu);
        myTabRg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                // TODO Auto-generated method stub
                switch (checkedId) {
                    case R.id.rb_test:
                        fragment = new TestFragment();
                        Log.i("MyFragment", "TestFragment");
                        getSupportFragmentManager().beginTransaction().replace(R.id.main_content, fragment)
                                .commit();
                        break;
                    case R.id.rb_result:
                        fragment = new ResultFragment();
                        Log.i("MyFragment", "ResultFragment");
                        getSupportFragmentManager().beginTransaction().replace(R.id.main_content, fragment).commit();
                        break;
                    case R.id.rb_message:
                        fragment = new MessageFragment();
                        Log.i("MyFragment", "MessageFragment");
                        getSupportFragmentManager().beginTransaction().replace(R.id.main_content, fragment)
                                .commit();
                        break;
                    case R.id.rb_setting:
                        fragment = new SettingFragment();
                        Log.i("MyFragment", "SettingFragment");
                        getSupportFragmentManager().beginTransaction().replace(R.id.main_content, fragment)
                                .commit();
                        break;
                    default:
                        break;
                }

            }

        });
    }

}
布局文件:activity_test.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">


    <FrameLayout
        android:id="@+id/main_content"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="0.78" />

    <RadioGroup
        android:id="@+id/tab_menu"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:background="#C4C4C4">

        <RadioButton
            android:id="@+id/rb_test"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center_horizontal|bottom"
            android:paddingTop="2dp"
            android:text="测试"
            android:textSize="30dp"

            android:checked="true"
          <span style="color:#ff0000;">  android:textColor="@drawable/tab_selector_tv_color"
            android:background="@drawable/tab_selector_checked_bg"</span>
            />

        <RadioButton
            android:id="@+id/rb_result"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center_horizontal|bottom"
            android:paddingTop="2dp"
            android:text="结果"
            android:textSize="30dp"

            android:textColor="@drawable/tab_selector_tv_color"
            android:background="@drawable/tab_selector_checked_bg"

             />

        <RadioButton
            android:id="@+id/rb_message"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center_horizontal|bottom"
            android:paddingTop="2dp"
            android:text="信息"
            android:textSize="30dp"

            android:textColor="@drawable/tab_selector_tv_color"
            android:background="@drawable/tab_selector_checked_bg"
            />

        <RadioButton
            android:id="@+id/rb_setting"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center_horizontal|bottom"
            android:paddingTop="2dp"
            android:text="配置"
            android:textSize="30dp"

            android:textColor="@drawable/tab_selector_tv_color"
            android:background="@drawable/tab_selector_checked_bg"
         />
    </RadioGroup>



</LinearLayout>

上面标红的地方是用了选择器,在切换界面时改变按钮的背景和字体颜色

tab_selector_checked_bg.xml:

<?xml version="1.0" encoding="utf-8"?>
<!--用于控制切换的时候显示button背景的颜色 ,使用 drawable  -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:drawable="@color/colorGrey"/>
</selector>
tab_selector_tv_color.xml:

<?xml version="1.0" encoding="utf-8"?>
<!--用于控制切换的时候显示下面字体的颜色-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="@android:color/black"/>
    <item android:state_checked="false" android:color="@color/colorGrey"/>
</selector>

四个界面的布局文件基本都是一样的,贴出一个content_result.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/resultListView"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_above="@+id/button2" />
</LinearLayout>

ResultFragment需要 extends Fragment,这四个也都是差不多的,贴出其中一个

package android.cl.com.uitest;

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.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

public class ResultFragment extends Fragment {


    public ResultFragment() {
        // Required empty public constructor
    }

    private ListView listView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
    /*
       在 fragment 里面调用 findViewById
     1.是在 onCreateView 中
     2.是 view.findViewById 而不是 activity.findViewById
    *
    * */
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        //我们设置一个List集合,然后向里边添加几条数据
        List<String> ls = new ArrayList<String>();
        ls.add("结果1");
        ls.add("结果2");
        ls.add("结果3");

        View view = inflater.inflate(R.layout.content_result, container, false);
        listView = (ListView)view.findViewById(R.id.resultListView);
        //获取xml文件中listView控件
        listView.findViewById(R.id.resultListView);
        //然后为listView控件调用setAdapter方法,让数据显示在界面上。
        listView.setAdapter(new ArrayAdapter<String>(getContext(), android.R.layout.simple_list_item_1, ls));
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                                    long arg3) {
                //通过单击事件,获得单击选项的内容
                String text = listView.getItemAtPosition(arg2) + "";
                //通过Toast对象显示出来。
                Toast.makeText(getContext(), text, Toast.LENGTH_SHORT).show();
            }
        });
        return view;
    }


}


对了,还有一个最后的那个修改radiobutton的格式的,个人喜欢这种的,文字在左边,按钮在右边

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <RadioGroup
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_above="@+id/button2"
        android:weightSum="1">

        <!--
        第一步:
        android:button="@null"这条语句将原来系统的RadioButton图标给隐藏起来。
        第二步:
         android:drawableRight="@android:drawable/btn_radio"这条语句
        在原来图标的右边添加一个系统自带的btn_radio图标,我想RadioButton就是在btn_radio图标上进行封装而已。
        -->
        <RadioButton
            android:layout_width="120pt"
            android:layout_height="wrap_content"
            android:text="1080P"
            android:id="@+id/radioButton"
            android:button="@null"
            android:drawableRight="@android:drawable/btn_radio" />

        <RadioButton
            android:layout_width="120pt"
            android:layout_height="wrap_content"
            android:text="720P"
            android:id="@+id/radioButton2"
            android:button="@null"
            android:drawableRight="@android:drawable/btn_radio"/>

    </RadioGroup>

</LinearLayout>


OK,完成啦!









源码下载:http://download.youkuaiyun.com/detail/i_do_can/9378925

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值