kotlin开发中,如何做到导航子标签跳转?Fragment的多种跳转

U1S1,自从从JAVA转Kotlin之后,遇上各种坑。Kotlin应该是JAVA它亲兄弟,但是写起来就是各种不适应。

今天在写导航栏子页面跳转时候死活无法跳转,错误类型如图:

那么原因是我使用了 Intent 跳转页面,也就是  :

  override fun  onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        imageButton3.setOnClickListener {
            val intent = Intent(this, Comic::class.java)
            startActivity(intent)
        }
    }

按道理来说,val intent = intent(contect,java.class)这样写是没错的,但是这只适用于Activity转跳另一个Activity。

回到我们程序本身,导航栏的子页面我们称之为 FragmentActivity,那么原方法必然是不对的。必须修改成:

  override fun  onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        imageButton3.setOnClickListener {
            val intent = Intent(activity, Comic::class.java)
            startActivity(intent)
        }
    }

很明显我们直接本页面直接使用activity替代,这样就可以实现导航栏的子页面转跳到另外一个activity。

同样的,既然有FragmentActivity页面转跳到Activity。那么也就会存在以下多种情况(划重点兄弟萌):

  • 1、从同一个Activiy的一个Fragment跳转到另外一个Fragment
  • 2、从一个Activity的Fragment跳转到另外一个Activity
  • 3、从一个Activity跳转到另外一个Activity的Fragment上
  • 4、从一个Activity的Fragment跳转到另外一个Activity的Fragment上

此处参考于文章:https://www.jianshu.com/p/ab1cb7ddf91f ,接下来以此说明

1、从同一个Activiy的一个Fragment跳转到另外一个Fragment

getActivity().getSupportFragmentManager() 
    .beginTransaction()
    .replace(R.id.xx, new XxxFragment(), null) 
    .addToBackStack(null)
    .commit();

 2、从一个Activity的Fragment跳转到另外一个Activity
这就是我在作业中遇到的问题。

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

 3、从一个Activity跳转到另外一个Activity的Fragment上
例如我们要从OtherActivity跳转到MainActivity的YourFragment上去:
首先,我们在OtherActivity中的跳转事件中给MainActivity传递一个名为id的参数:

Intent intent = new Intent(OtherActivity.this, MainActivity.class);
intent.putExtra("id",1);
startActivity(intent);

然后,我们在MainActivity里接收id值,对值进行判断,如果正确进行跳转操作:

 int id = getIntent().getIntExtra("id", 0);
 if (id == 1) {      
      getSupportFragmentManager()
        .beginTransaction()
        .replace(R.id.fragment_container,new YourFragment())
        .addToBackStack(null)
        .commit(); 
 }

 4、从一个Activity的Fragment跳转到另外一个Activity的Fragment上
这种跳转与第三种跳转极为类似,我们只需要将上面的
Intent intent = new Intent(OtherActivity.this, MainActivity.class);
书写在对应的Fragment中,将OtherActivity.this更改为getActivity(),其他不用改变,几个完成跳转。

 

 

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董厂长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值