android fragment 跳到另一个fragment

一共有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方法了,就可以了!
时间: 2024-10-13 07:31:16

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

安卓fragment跳转activity,fragment跳转fragment,activity跳转fragment

Activity中加载不同的fragment  / Fragment中加载不同的fragment 主Activity中加载(切换)多个fragment(也可以理解为activity跳转fragment)或主fragment中加载(切换)多个fragment Activity布局中要有一个fragment布局空间,比如id名为main_ FrameLayout 写两个fragment类继承自fragment,比如 fragmentaextends Fragment (这个里面加载你的view和写你

Fragment跳转,同时实现Fragment

在使用getSupportFragmentManager().findFragmentByTag(tag)无法找到,返回为空,原因由于咋replace()时必须要将fragment放入到返回栈中. 保证调用以下方法:ft.addToBackStack(tag); /** * Example of starting nested fragment from another fragment: Fragment * newFragment = ManagerTagFragment.newInstan

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

你可以把fragment看成是activity的模块化部分,它拥有自己的生命周期,接受它自己的输入事件,你可以在activity运行时添加或者删除它(有点像是一个"子activity",你可以在不同的activity中重用它).本课将向你展示如何使用Support Libaray继承 Fragment 类来让你的应用能够兼容正在运行Android 1.6的设备. 提示: 如果你决定你的应用需求的最低API级别是11或者更高,那么你不需要使用Support Library,你可以直接使用

实现Android 动态加载APK(Fragment or Activity实现)

尊重原创:http://blog.csdn.net/yuanzeyao/article/details/38565345 最近由于项目太大了,导致编译通不过(Android对一个应用中的方法个数貌似有限制),所以一直琢磨着能否将某些模块的APK不用安装,动态加载,通过在网上查找资料和网友的帮助,终于实现了APK的动态加载,网络上介绍APK动态加载的文章非常多,但是我觉得写得非常好的就是这位大牛的,我基本上就是使用他的这种方案,然后加入了自己的元素.这位大牛是通过Activity实现的,我稍作修改

Android学习笔记十三.深入理解fragment(一)

深入理解fragment(一) Fragment是Android3.0引入的新API,可以把Fragment想成Activity中的模块,这个模块有自己的布局,有自己的生命周期,单独处理自己的输入,在Activity运行的时候可以加载或者移除Fragment模块. 可以把Fragment设计成可以在多个Activity中复用的模块,当开发的应用程序同时适用于平板电脑和手机时,可以利用Fragment实现灵活的布局,改善用户体验. 一.Fragment的特征 1.Fragment总是作为Activ

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

Fragments的生命周期 每一个fragments 都有自己的一套生命周期回调方法和处理自己的用户输入事件. 对应生命周期可参考下图: 创建片元(Creating a Fragment) To create a fragment, you must create a subclass of Fragment (or an existing subclass of it). The Fragment class has code that looks a lot like an Activit

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

1 怎样在acitivty中运行fragment中的方法: 首先获得这个Fragment的对象 xxxFragment fragmentObject = (xxxFragment) getFragmentManager.findFragmentByTag("xx"); 2 怎样在Fragment中运行activity中的方法: 第一种:让acitivity继承接口 另外一种:在fragment中使用getActivity()可是要加上acitivity的名字,即: ((MainActi

安卓训练-开始-使用 Fragment 构造动态 UI-创建 Fragment

创建 Fragment 上一课 下一课 这节课教你 创建一个 Fragment 类 使用 XML 添加 Fragment 到 Activity 你还需要阅读 Fragments 试试 下载示例 FragmentBasics.zip 你可以认为 fragment 是 activity 的模块化的部分,它有自己的生命周期,接收自己的输入事件,你可以在 activity 的运行过程中把它添加到 activity 或从 activity 中删除它(有点像一个你可以在不同 activity 中使用的"子

Android官方入门文档[16]创建一个Fragment代码片段

Android官方入门文档[16]创建一个Fragment代码片段 Creating a Fragment创建一个Fragment代码片段 This lesson teaches you to1.Create a Fragment Class2.Add a Fragment to an Activity using XML You should also read?Fragments 这节课教你1.创建一个Fragment代码片段类2.使用XML来添加一个Fragment代码片段给一个活动 你也