昨天写的这几篇博客,Android-fragment简介-fragment的简单使用,Activity-fragment-ListView展示,Android-fragment生命周期,Android-fragment的替换, 都是讲解使用 android.app.Fragment 自身的Fragment,不是v4包的;

而今天的博客是专门讲解v4.app.Fragment(v4包的),全部都是要导入v4包,使用v4包的Fragment有个好处就是可以兼容低版本

以前的导包:

import android.app.Fragment;
import android.app.FragmentTransaction;

现在的导包:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;

Activity的代码:

package liudeli.activity.fragment;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.widget.Button; import liudeli.activity.R; /**
* 全部使用v4.app.Fragment支持包来实现
* 既然用了全部使用v4.app.Fragment支持包来实现,所以Activity必须是FragmentActivity才能识别布局的<fragment
*/
public class MyTestFragmentActivity4 extends FragmentActivity implements View.OnClickListener { private Button msg;
private Button persons;
private Button my; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_fragment4); initView();
initChangeFragment();
initListener();
} private void initView() {
msg = findViewById(R.id.bt_msg);
persons = findViewById(R.id.bt_persons);
my = findViewById(R.id.bt_my);
} /**
* 初始化默认切换到 消息Fragment
*/
private void initChangeFragment() {
/**
* 得到FragmentManager 要用 v4支持包里面的getSupportFragmentManager
*/
FragmentManager manager = getSupportFragmentManager();
// 开始事务 得到事务
FragmentTransaction fragmentTransaction = manager.beginTransaction();
// 替换操作
fragmentTransaction.replace(R.id.frame_layout, new MsgFragment());
// 提交
fragmentTransaction.commit(); setButton(0);
} private void initListener() {
msg.setOnClickListener(this);
persons.setOnClickListener(this);
my.setOnClickListener(this);
} @Override
public void onClick(View v) {
/**
* 得到FragmentManager 要用 v4支持包里面的getSupportFragmentManager
*/
FragmentManager manager = getSupportFragmentManager();
// 开始事务 得到事务
FragmentTransaction fragmentTransaction = manager.beginTransaction(); Fragment fragment = null; switch (v.getId()) {
case R.id.bt_msg:
fragment = new MsgFragment();
setButton(0);
break;
case R.id.bt_persons:
setButton(1);
fragment = new PersonsFragment();
break;
case R.id.bt_my:
setButton(2);
fragment = new MyWoFragment();
break;
}
// 替换操作
fragmentTransaction.replace(R.id.frame_layout, fragment);
// 提交
fragmentTransaction.commit();
} /**
* 设置三个按钮的颜色
* @param value
*/
private void setButton(int value) {
switch (value) {
case 0:
msg.setTextColor(Color.RED);
persons.setTextColor(Color.BLACK);
my.setTextColor(Color.BLACK);
break;
case 1:
msg.setTextColor(Color.BLACK);
persons.setTextColor(Color.RED);
my.setTextColor(Color.BLACK);
break;
case 2:
msg.setTextColor(Color.BLACK);
persons.setTextColor(Color.BLACK);
my.setTextColor(Color.RED);
break;
} }
}

Activity布局的代码:

<?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"> <!-- 帧布局 下面的LinearLayout已经先填充了,剩下的控件我全部来填充 -->
<FrameLayout
android:id="@+id/frame_layout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
> </FrameLayout> <!-- 我的layout_weight默认为0,我先填充我的控件 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_below="@id/frame_layout"> <Button
android:id="@+id/bt_msg"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="消息"
android:gravity="center"
android:textColor="@android:color/black"
/> <Button
android:id="@+id/bt_persons"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="好友"
/> <Button
android:id="@+id/bt_my"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="我的"
/> </LinearLayout> </LinearLayout>

第一个Fragment的代码:

package liudeli.activity.fragment;

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.ListAdapter;
import android.widget.ListView;
import android.widget.Toast; public class MsgFragment extends Fragment { @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
return new ListView(getActivity()); // Fragment不能使用this
} @Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState); final String[] data = new String[]{
"你有一条消息1",
"你有一条消息2",
"你有一条消息3",
"你有一条消息4",
"你有一条消息5",
"你有一条消息6",
"你有一条未读消息6",
"你有一条未读消息7",
"你有一条未读消息8",
}; ListView listView = (ListView)view;
ListAdapter listAdapter = new ArrayAdapter(getActivity(),
android.R.layout.simple_list_item_1,
android.R.id.text1,
data);
listView.setAdapter(listAdapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getActivity(), data[position], Toast.LENGTH_SHORT).show();
}
});
}
}

第二个Fragment的代码:

package liudeli.activity.fragment;

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.ListAdapter;
import android.widget.ListView;
import android.widget.Toast; public class PersonsFragment extends Fragment { @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
return new ListView(getActivity()); // Fragment不能使用this
} @Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState); final String[] data = new String[]{
"张三",
"李四",
"王五",
"赵六",
"王八",
"朱九",
"厨十",
"阿名",
"雄霸",
}; ListView listView = (ListView)view;
ListAdapter listAdapter = new ArrayAdapter(getActivity(),
android.R.layout.simple_list_item_1,
android.R.id.text1,
data);
listView.setAdapter(listAdapter); // ListVIew 设置可以解决,Item长按无反应的问题: android:descendantFocusability="blocksDescendants"
// listView.setDescendantFocusability(2); /*listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getActivity(), data[position], Toast.LENGTH_SHORT).show();
return true;
}
});*/ listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getActivity(), data[position], Toast.LENGTH_SHORT).show();
}
});
}
}

第三个Fragment的代码:

package liudeli.activity.fragment;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.ListAdapter; public class MyWoFragment extends android.support.v4.app.Fragment { @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
return new GridView(getActivity()); // Fragment不能使用this
} @Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState); String[] data = new String[]{
"我的账号",
"我的社交",
"我的简洁",
"我的钱包",
"我的设置",
"退出账号",
"重置账号"
}; GridView gridView = (GridView)view; // 设置三列
gridView.setNumColumns(3); ListAdapter listAdapter = new ArrayAdapter(getActivity(),
android.R.layout.simple_list_item_1,
android.R.id.text1,
data);
gridView.setAdapter(listAdapter);
}
}

效果:

Android-fragment的替换-V4支持包的更多相关文章

  1. Android-fragment-ListView展示-v4支持包

    昨天写的这几篇博客,Android-fragment简介-fragment的简单使用,Activity-fragment-ListView展示,Android-fragment生命周期,Android ...

  2. 如何在Android Studio中添加RecyclerView-v7支持包

    1.打开SDK Manager,在Extras树下找到Android Support Library,下载好支持包.RecyclerView在v7-21版本就出来了.我这里不用更新了,说明是最新的,怎 ...

  3. Android最新支持包Design简介

    Android 5.0 Lollipop是曾经最著名的Android发布之一,这样说很大一部分原因是材料设计的引入,而材料设计则是一种刷新了整个Android体验的设计语言.这个详细说明是开始适应材料 ...

  4. Android Fragment 生命周期及其API使用(建议使用自定义View替换Fragment)

    我为什么不主张使用Fragment Fragment:( Fragment就相当于一个有生命周期的View,它的生命周期被所在的Activity的生命周期管理 ) 生命周期回调说明: onAttach ...

  5. android v4兼容包

    一句话解释android兼容包就是:支持更多的组件,样式更好看了.好粗糙的解释啊! 我们都知道Android一些SDK比较分裂,为此google官方提供了Android Support Library ...

  6. Android Fragment 生命周期及其正确使用(建议使用自定义View替换Fragment)

    使用Fragment 官方例子中显示: 例如:一个学生Fragment,需要传入studentId,进行http请求显示,那么setArguments后防止杀掉Fragment后,参数为0,显示不了数 ...

  7. Android support library支持包常用控件介绍(一)

    谷歌官方推出Material Design 设计理念已经有段时间了,为支持更方便的实现Material Design设计效果,官方给出了Android support design library 支 ...

  8. Android support library支持包常用控件介绍(二)

    谷歌官方推出Material Design 设计理念已经有段时间了,为支持更方便的实现 Material Design设计效果,官方给出了Android support design library ...

  9. V4 V7 V13支持包的区别(转)

    三者均为支持包,可以让低版本系统使用高版本特性,支持最小版本有差异 V4支持1.6以上 V7支持2.1以上 V13支持3.2以上 V7依赖V4 转自:

随机推荐

  1. Containerpilot 配置文件 之 Jobs

    ContainerPilot job是用户定义的进程和规则,用于何时执行它,如何进行健康检查,以及如何向Consul做广告. 这些规则旨在允许灵活性覆盖几乎可能要运行的任何类型的进程. 一些可能的jo ...

  2. afinal框架下 ViewInject的使用

    1.可以在BaseActivity界面onCreate 方法setContentView后加上该语句. initInjectedView(this); 2.@ViewInject(id=R.id.v_ ...

  3. HTML的实际演练1

    1.HTML介绍 一个网站的建立都是HTML的,例如大家可以打开F12就可以看到浏览器的一个开发者模式,就可以看到网页的源代码了: 当然这网页他有很多的标签编写组成的,有的显示文字,段落,有的是个超链 ...

  4. 64位windows+32位JDK8+32位eclipse是可以的

  5. Python frozenset() 函数

    Python frozenset() 函数  Python 内置函数 描述 frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素. 语法 frozenset() 函数语法: ...

  6. Url,HTTPUrlConnection(一)

    package com.cmy.urlcon; import java.io.BufferedReader; import java.io.IOException; import java.io.In ...

  7. React Native 首次加载白屏优化

    RN首次加载都会有个白屏过程,一般都会有500ms+的白屏时间,原生页面开发同样的页面会能够快速显示而在RN页面中有个明显的等待过程,这个会影响用户体验. 1.使用过渡页面 简单处理可以在白屏过程中加 ...

  8. 翻转链表reverse linked list:全部,m~n

    全部 [抄题]: Reverse a singly linked list. [思维问题]: 以为要用dummy node [一句话思路]: 直接全部转过来就行了,用dummy node反而多余 [输 ...

  9. [leetcode]523. Continuous Subarray Sum连续子数组和(为K的倍数)

    Given a list of non-negative numbers and a target integer k, write a function to check if the array ...

  10. TextView 小技巧

    1.TextView的单行显示 最后空间不够的画变为省略号显示 textView中让结尾变为省略号android:ellipsize = "end" 省略号在结尾tv.setEll ...