Android Fragment跳转到Activity的方法

一开始我直接按照Activity页面之间跳转的方法进行的跳转,就是在xml文件中给相应的组件onClick

android:onClick="to_search"

在网上查询到的好像都是下面这种

Intent intent = new Intent(getActivity(),SearchActivity.class);
startActivity(intent);

但是我在Fragment的Java文件中用到这个并不能实现预想的效果。

在多次尝试后我直接在Fragment所嵌入的Activity的Java文件中添加了以下代码,实现了跳转的效果。


//跳转到搜索的页面
    public void to_search(View view) {
        Intent intent = new Intent(FragmentActivity.this,SearchActivity.class);
        startActivity(intent);
        System.out.println("发生了跳转");
    }

虽然不是很懂原理,但是这个是实现了效果的。但是这个好像不是很合理,这就是一个简单的Activity之间的跳转。

后面发现在Fragment页面由点击事件时不能像在Activity页面一样,直接写方法。如下,是错误的形式,不能实现效果。


    public void to_search(View view) {
        Intent intent = new Intent(getActivity(),SearchActivity.class);
        startActivity(intent);
    }

在Fragment中如果有点击事件应如下:

首先在xml中不需要有onClick方法,只需要定义id就可以了如下:

<ImageView
            android:id="@+id/search_icon"
            android:layout_width="0dp"
            android:layout_height="30dp"
            android:layout_marginTop="5dp"
            android:layout_marginBottom="5dp"
            android:layout_weight="1"
            android:src="@drawable/search"/>

然后在相应的Fragment的java文件中如下操作。

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
//        这里默认的是return inflater.inflate(R.layout.fragment_index, container, false);
//        因为后面的监听中有view 先不return,先定义一个
        final View view = inflater.inflate(R.layout.fragment_index, container, false);
//        组件绑定 通过id 为了方便就直接用一样的id
        ImageView search_icon = view.findViewById(R.id.search_icon);
        //设置点击事件
        search_icon.setOnClickListener(new View.OnClickListener() {
            //跳转到搜索的页面  这里需要注意不需要像Activity之间跳转的那样,自己定义方法名,之间onClick就可以了
            @Override
            public void onClick(View view) {
                //到这里使用网上搜到的就可以了正常实现了。
                Intent intent = new Intent(getActivity(),SearchActivity.class);
                startActivity(intent);
                System.out.println("跳转到搜索页面");
            }
        });
        //这里要注意return view;不能缺少
        return view;
    }

总结:网上查询到的跳转代码没有错误,但是不够全面,容易造成误解。

正确的方法应该是在Frangment的onCreateView中绑定组件,再给组件添加相应事件,实现效果。

  • 18
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值