一共有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. iostat 离线安装

    由于lucene需要一定的io读写顾安装iostat来对磁盘io进行监控 iostat 属于sysstat下的功能 git路径如下:https://github.com/sysstat/sysstat ...

  2. centos 6.5 hadoop 2.3 初配置

    为了安装hadoop废了好大的劲才把esxi5.5给装好. 同时装了centos6.5,由于hadoop里面有个免密码登陆所以这里讲的就是免密码登陆. 看了大家的博客文章发现转发的一部分,写ubunt ...

  3. 【BBST 之伸展树 (Splay Tree)】

    最近“hiho一下”出了平衡树专题,这周的Splay一直出现RE,应该删除操作指针没处理好,还没找出原因. 不过其他操作运行正常,尝试用它写了一道之前用set做的平衡树的题http://codefor ...

  4. 程序员求职之道(《程序员面试笔试宝典》)之看着别人手拿大把的offer,不淡定了怎么办?

    不管是在哪里,不管发生什么事,不要随便放下自己. --<当男人恋爱时> 很多求职者都会面临一个问题:别人手拿大把大把的offer了,而自己却是两手空空,别人签约之后已经过着"猪狗 ...

  5. java BingInteger生成2进制String循环移位时长度自动缩减

    最近在做文本处理,使用MD5 生成一段文字的MD5哈希长度为32位也即128个0-1序列. 由于需要对这个MD5值进行循环移位,显然普通的  int 是不行的,所以使用 BigInteger.但是在使 ...

  6. 关于jQuery获取checkbox状态的问题

    这位大神概括的很好 http://www.cnblogs.com/wangkongming/p/4002710.html

  7. sqlserver 执行远程数据库代码

    1.启用Ad Hoc Distributed Queries: exec sp_configure 'show advanced options',1reconfigureexec sp_config ...

  8. Spring MVC中数据绑定(转)

    Spring MVC中数据绑定 比如Product有一个createTime属性,是java.util.Date类型.那么最简单的转型处理是,在SimpleFormController中覆盖initB ...

  9. [原创]VS2010中创建动态链接库及其调用

    [原创]VS2010中创建动态链接库及其调用 一.创建动态链接库 在VS2010中创建动态链接库的步骤如下: 1)生成->编译->生成MyDll 二.调用 当调用DLL中的方法,程序编译产 ...

  10. (原)ubuntu上安装nvidia及torch的nccl

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5717234.html 参考网址: https://github.com/NVIDIA/nccl htt ...