您的位置:首页 > 其它

关于fragment的一个实例

2016-03-25 13:23 330 查看
在安卓学习过程中,fragment是非常重要的部分,掌握这部分也是很必须的,感觉之前学习的那个实例非常好,所以特意记一下,也算是温故而知新吧。

当然先复习一下fragment的生命周期:

onattacth
获得要附着的activity

oncreate
创建fragment实例对象

oncreateView创建出fragment视图,该方法返回一个视图对象(View),这个就是fragment需要显示的视图对象

onactivitycreated附着的activity已经创建完毕

onstart
启动

onresume
fragment运行中

onpause
暂停(activity暂停,fragment也暂停)

onstop
彻底看不到视图

ondestroyView先销毁视图

ondestroy
销毁实例对象

ondetach
从activiity中解开附着

fragment生命周期是非常之重要的,必须掌握好。

在fragmentActivity中有一个事务管理者,FragmentManager需要把fragment放到activity中进行操作,就需要依靠

事物管理者。ta具有拥有相应的增删改查操作方法。在activity中必须为fragment留一个布局空间,必须是Framelayou形式的。

下面是代码实现:(其余文件在上传的文件中)文件竟然无法上传,那就暂且只收录主程序~

在本程序中使用到了Selector。

package com.example.android_11_7x;

import android.os.Bundle;

import android.provider.ContactsContract.CommonDataKinds.Im;

import android.support.v4.app.FragmentActivity;

import android.support.v4.app.FragmentManager;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.Window;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.TextView;

public class MainActivity extends FragmentActivity implements OnClickListener {
//声明四个fragment
private First_Fragment ff;
private SecondFragment sf;
private Third_Fragment tf;
private Forth_Fragment fhf;
//声明fragmentnanager
private FragmentManager manager;
private LinearLayout lls[] = new LinearLayout[4];
private TextView tvs[] = new TextView[4];
//定义好图片供显示点击效果
private int simgs[] = {R.drawable.tabbar_home_highlighted,R.drawable.tabbar_message_center_highlighted,R.drawable.tabbar_profile_highlighted,R.drawable.tabbar_more_highlighted};
private int imgs[] = {R.drawable.tabbar_home,R.drawable.tabbar_message_center,R.drawable.tabbar_profile,R.drawable.tabbar_more};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);//
b8bf
不在界面中显示标题栏,必须放在setContentView方法前
setContentView(R.layout.activity_main);
initViews();//初始化视图
initFragments();//初始化fragment
initOper();//封装fragment的相应操作
}
private void initOper() {
// TODO Auto-generated method stub
manager = getSupportFragmentManager();
manager.beginTransaction().add(R.id.main_content, ff).add(R.id.main_content, sf).add(R.id.main_content, tf).add(R.id.main_content, fhf).commit();
manager.beginTransaction().show(ff).hide(sf).hide(tf).hide(fhf).commit();//刚开始时默认第一个布局是选中的
tvs[0].setSelected(true);//同上
}
private void initFragments() {
// TODO Auto-generated method stub
ff = new First_Fragment();
sf = new SecondFragment();
tf = new Third_Fragment();
fhf = new Forth_Fragment();
}
private void initViews() {
// TODO Auto-generated method stub
lls[0] = (LinearLayout) findViewById(R.id.main_first);
lls[1] = (LinearLayout) findViewById(R.id.main_second);
lls[2] = (LinearLayout) findViewById(R.id.main_third);
lls[3] = (LinearLayout) findViewById(R.id.main_forth);
for(int i=0;i<lls.length;i++)
{
lls[i].setOnClickListener(this);//为布局设定监听
}
tvs[0] = (TextView) findViewById(R.id.main_tv1);
tvs[1] = (TextView) findViewById(R.id.main_tv2);
tvs[2] = (TextView) findViewById(R.id.main_tv3);
tvs[3] = (TextView) findViewById(R.id.main_tv4);
for(int i=0;i<tvs.length;i++)
{
tvs[i].setOnClickListener(this);//为textview设置监听
}

}
private void setSelected()//定义一个方法,把所有的文字都设为为选中状态
{

    for(int i=0;i<tvs.length;i++)

    {

    tvs[i].setSelected(false);

    }
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.main_first://如果被点击的视图的id是第一个视图的id
setSelected();
tvs[0].setSelected(true);
selectID(0);
tvs[0].setSelected(true);
manager.beginTransaction().show(ff).hide(sf).hide(tf).hide(fhf).commit();
break;
case R.id.main_second:
selectID(1);
setSelected();
tvs[1].setSelected(true);
manager.beginTransaction().show(sf).hide(ff).hide(tf).hide(fhf).commit();
break;
case R.id.main_third:
selectID(2);
setSelected();
tvs[2].setSelected(true);
manager.beginTransaction().show(tf).hide(sf).hide(ff).hide(fhf).commit();
break;
case R.id.main_forth:
selectID(3);
setSelected();
tvs[3].setSelected(true);
manager.beginTransaction().show(fhf).hide(sf).hide(tf).hide(ff).commit();
break;
default:
break;
}
}
private void selectID(int pos) {//定义这个方法使被点击的视图对应的imageview为点击状态,其余视图的imageview为非点击状态
// TODO Auto-generated method stub
for (int i = 0; i < lls.length; i++) {
if(i==pos)
{
ImageView iv = (ImageView) lls[i].getChildAt(0);
iv.setImageResource(simgs[i]);
}
else
{
ImageView iv2 = (ImageView) lls[i].getChildAt(0);
iv2.setImageResource(imgs[i]);
}
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: