android遇到的问题的总结----Activity和fragment之间相互跳转

2023-05-16

一、activity与activity之间跳转:

//第一个参数是上下文,
//第二个参数是将要跳转的activity
  Intent intent = new Intent(LoginActivity.this,StudentActivity.class);
 startActivity(intent);
//带参数跳转:
 Intent intent = new Intent(LoginActivity.this,StudentActivity.class);
intent.putExtra("Flag",flag);
startActivity(intent);

//另一个activity通过:
 getIntent().getIntExtra("Flag", 0);getIntent().getStringExtra("Flag");
 

二、activity跳转fragment:

activity不能直接跳转到fragment,必须先跳转到fragment对应的activity中
法一:
activity可通过发送广播

  show_pick_course.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v) {
                T_pick_course.this.finish();
                Log.v("qjm", "show_pick_course click");
                Intent intent = new Intent("android.intent.action.CART_BROADCAST");
                intent.putExtra("data", "refresh");
                LocalBroadcastManager.getInstance(T_pick_course.this).sendBroadcast(intent);
                sendBroadcast(intent);

            }
        });

fragment接收广播:

 @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
      //  Log.v("qjm","show_pick_course click onActivityCreated");
        LocalBroadcastManager broadcastManager=LocalBroadcastManager.getInstance(getActivity());
        IntentFilter intentFilter=new IntentFilter();
        intentFilter.addAction("android.intent.action.CART_BROADCAST");
        BroadcastReceiver broadcastReceiver=new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                String msg=intent.getStringExtra("data");
                if("refresh".equals(msg)){
                //执行的操作
                }
         }
       };
        broadcastManager.registerReceiver(broadcastReceiver,intentFilter);
    }

法二:
Activity:
通过setReult("请求码")

 btn_back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //返回查看课表
                setResult(222);
            }
        });

fragment:重写onActivityResult()方法,activity传来的请求码,标记要跳转到哪个fragment。例如222,跳转到的是CourseFragment

 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==1&&resultCode==222){//pan段响应码和请求码
            StudentActivity studentActivity=(StudentActivity)getActivity();
            android.support.v4.app.FragmentManager fragmentManager=studentActivity.getSupportFragmentManager();
            android.support.v4.app.FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.rb_course, new CourseFragment());
            fragmentTransaction.commit();
        }
    }

二、fragment跳转activity:

//mContext指代上下文,可以换成getActivity()
 Intent intent=new Intent(mContext,T_pick_course.class);
   startActivity(intent);

再添加一个知识点:

返回上一个页面:调用.finish();

finish():用于结束一个activity的生命周期,finish是activity类,针对activity,当调用finish()后,仅仅把当前activity推向后台,并没有释放资源。

//从activity1--->activity2
Intent intent=new Intent(activity1.this,activity2.class);
startActivity(intent);
finish();

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android遇到的问题的总结----Activity和fragment之间相互跳转 的相关文章

随机推荐