一共有4个fragment,分别是contact(联系人),friends(朋友),search(查找),more(更多)。使用的都是同一个布局,每个fragment中都有四个内部按钮,可以切换到其他的3个fragment中。

现在只考虑在contact中,实现点4个(其实有效的是3个),切换到其他3个fragment中。

现在的情况是,点击contactfragment中的按钮,toast会响应,但是fragment不会跳转。这是怎么回事,下面是两个类的代码。

这是contactfragment。

public class ContactFragment extends Fragment implements OnClickListener {
MainActivity activity = (MainActivity) getActivity();
View view = null;
Button btn_inner_contact;
Button btn_inner_friends;
Button btn_inner_search;
Button btn_inner_more; @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.frag_content, container, false);
TextView textview_hint = (TextView) view
.findViewById(R.id.textview_hint);
textview_hint.setText("Contact");
initComponent();
return view;
} private void initComponent() {
btn_inner_contact = (Button) view
.findViewById(R.id.button_inner_contact);
btn_inner_friends = (Button) view
.findViewById(R.id.button_inner_friends);
btn_inner_search = (Button) view.findViewById(R.id.button_inner_search);
btn_inner_more = (Button) view.findViewById(R.id.button_inner_more); btn_inner_contact.setOnClickListener(this);
btn_inner_friends.setOnClickListener(this);
btn_inner_search.setOnClickListener(this);
btn_inner_more.setOnClickListener(this);
} @Override
public void onClick(View v) { FragmentManager fm = activity.getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
switch (v.getId()) {
case R.id.button_inner_contact:
Toast.makeText(getActivity(), "点击了内部contact按钮", Toast.LENGTH_SHORT)
.show();
if (activity.contactFragment == null) {
activity.contactFragment = new ContactFragment();
}
ft.replace(R.id.framelayout_content, activity.contactFragment); break;
case R.id.button_inner_friends:
Toast.makeText(getActivity(), "点击了内部friends按钮", Toast.LENGTH_SHORT)
if (activity.friendsFragment == null) {
activity.friendsFragment = new FriendsFragment();
}
ft.replace(R.id.framelayout_content, activity.friendsFragment);
break;
case R.id.button_inner_more:
if (activity.moreFragment == null) {
activity.moreFragment = new MoreFragment();
}
ft.replace(R.id.framelayout_content, activity.moreFragment);
break;
case R.id.button_inner_search:
if (activity.searchFragment == null) {
activity.searchFragment = new SearchFragment();
}
ft.replace(R.id.framelayout_content, activity.searchFragment);
break;
default:
break; }
ft.commit();
} }

这是mainactivity类,mainactivity中的那四个按钮及其响应时间是fragment外部的四个按钮,与内部的inner按钮没关系

public class MainActivity extends Activity implements OnClickListener {
public ContactFragment contactFragment;
public FriendsFragment friendsFragment;
public MoreFragment moreFragment;
public SearchFragment searchFragment;
private Button btn_contact;
private Button btn_friends;
private Button btn_search;
private Button btn_more; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initcomponet();
initview(); } private void initview() {
contactFragment = new ContactFragment();
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.framelayout_content, contactFragment);
ft.commit();
} private void initcomponet() { btn_contact = (Button) findViewById(R.id.button_contact);
btn_friends = (Button) findViewById(R.id.button_friends);
btn_more = (Button) findViewById(R.id.button_more);
btn_search = (Button) findViewById(R.id.button_search);
btn_contact.setOnClickListener(this);
btn_friends.setOnClickListener(this);
btn_more.setOnClickListener(this);
btn_search.setOnClickListener(this);
} @Override
public void onClick(View v) {
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
switch (v.getId()) {
case R.id.button_contact:
if (contactFragment == null) {
contactFragment = new ContactFragment();
}
ft.replace(R.id.framelayout_content, contactFragment); break;
case R.id.button_friends:
if (friendsFragment == null) {
friendsFragment = new FriendsFragment();
}
ft.replace(R.id.framelayout_content, friendsFragment); break;
case R.id.button_more:
if (moreFragment == null) {
moreFragment = new MoreFragment();
}
ft.replace(R.id.framelayout_content, moreFragment); break;
case R.id.button_search:
if (searchFragment == null) {
searchFragment = new SearchFragment();
}
ft.replace(R.id.framelayout_content, searchFragment);
break; default:
break;
}
ft.commit();
} }
我试了一下,把MainActivity activity=(MainActivity)getActivity();这行代码放到onclick方法了,就可以了!

android fragment 跳到另一个fragment的更多相关文章

  1. android studio 2.2.2下fragment的创建和跳转

    一,首先,Fragment是android应用中十分重要的一个功能,十分轻量化,也类似于activity一样,是一个个布局,可以相互跳转和传递参数.但是,它运行起来十分流畅,而且易于管理,下面是在学习 ...

  2. 【Android Developers Training】 20. 创建一个Fragment

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  3. Android学习路线(二十一)运用Fragment构建动态UI——创建一个Fragment

    你能够把fragment看成是activity的模块化部分.它拥有自己的生命周期,接受它自己的输入事件,你能够在activity执行时加入或者删除它(有点像是一个"子activity&quo ...

  4. Android UI开发详解之Fragment

    Fragment是Android自从3.0之后新加入的一个组件,我相信很多人都已经听说过这个组件了,但这个组件到底是个什么,如何去使用他呢,且听我讲来. 以下部分资料来自官网(官网才是王道,其他都是浮 ...

  5. Android Fragment详解(二):Fragment创建及其生命周期

    Fragments的生命周期 每一个fragments 都有自己的一套生命周期回调方法和处理自己的用户输入事件. 对应生命周期可参考下图: 创建片元(Creating a Fragment) To c ...

  6. Android开发之漫漫长途 XII——Fragment详解

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...

  7. Android为TV端助力 关于Fragment你所需知道的一切!

    转载自刘明渊 的博客地址:http://blog.csdn.net/vanpersie_9987 Fragment 是 Android API 中的一个类,它代表Activity中的一部分界面:您可以 ...

  8. 怎样在一个fragment or 随意类中操作还有一个fragment中的方法

    1 怎样在acitivty中运行fragment中的方法: 首先获得这个Fragment的对象 xxxFragment fragmentObject = (xxxFragment) getFragme ...

  9. Android从一个Fragment跳转到另一个Fragment后原来的组件不消失

    问题描述 Activity上放置了一个Fragment,Fragment上有按钮,点了按钮后,应该跳转到另一个Fragment, but 原来的Fragment的按钮不会消失,新的Fragment不是 ...

随机推荐

  1. QProcess进程间双向通信

    记得以前写过Linux的C程序, 里面用popen打开一个子进程, 这样可以用read/write和子进程通讯, 而在子进程里则是通过从stdin读和向stdout写实现对父进程的通讯. QProce ...

  2. PowerShell中的输出

    1 输出重定向 >  或者>> 2 输出控制 out-* -paging#分页输出 get-process | out-host -paging more指令用于屏显 get-pro ...

  3. JSP页面中文参数传递get和post方法分析

    原文 http://developer.51cto.com/art/200907/133499.htm 在项目中,我们经常遇到需要在JSP页面切换中传递中文字符.这主要有两种方式. ◆URL方式 例如 ...

  4. sort详解

    一. 简介 sort命令是帮我们依据不同的数据类型进行排序. 二. 语法 sort [-bcfMnrtk][源文件][-o 输出文件] 补充说明:sort可针对文本文件的内容,以行为单位来排序(默认为 ...

  5. Berserk Rook

    Berserk Rook As you may know, chess is an ancient game for which almost everyone has at least a basi ...

  6. mybatis源代码分析:mybatis延迟加载机制改进

    在上一篇博客<mybatis源代码分析:深入了解mybatis延迟加载机制>讲诉了mybatis延迟加载的具体机制及实现原理. 可以看出,如果查询结果对象中有一个属性是需要延迟加载的,那整 ...

  7. jquery图片滚动仿QQ商城带左右按钮控制焦点图片切换滚动

    jquery图片滚动仿QQ商城带左右按钮控制焦点图片切换滚动 http://www.17sucai.com/pins/demoshow/382

  8. Mysql update 错误

    今天在工作的时候发现自己update 一个表的某个字段超时,想了好久,首先想到的办法是,延长操作时间: mysql> set innodb_lock_wait_timeout=100 mysql ...

  9. iOS 大牛

    1,http://lixing123.com 2,http://kayosite.com

  10. python高级编程之超类02:super的缺陷

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #当使用多重继承层次结构时,再使用super的时候是非常危险的,主要 ...