猿问

如何将 Intent extras 传递给 PreviousActivity 中的 Activity

我有两个 Activity Activity A 和 B。Activity B 包含 viewpager,它有两个片段,Fragment I和Fragment II。我正在寻找一种解决方案,将两个单独的意图附加项即意图 extras_one和intenttextra_two从 Activity A 传递到 B,并在片段 I中加载第一个意图附加项,在片段 II中加载第二个意图附加项。


这可能吗。


这是我在 Activity B 中的 viewpager


        ViewPager viewPager = (ViewPager) findViewById(R.id.pager);

        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());

        adapter.addFragment(new Home(), "Fragment I");

        adapter.addFragment(new Grade(), "Fragment II");



        viewPager.setAdapter(adapter);


        TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);

        tabLayout.setupWithViewPager(viewPager);



    }

我现在使用 case 语句在 Activity A 中传递参数。


        case 0:


                Intent math_strt = new Intent(itemView.getContext(), MainActivity.class);

                math_strt.putExtra(EXTRA_URL, "https://api.myjson.com/bins/16mecx");

                itemView.getContext().startActivity(math_strt);


                break; 

提前致谢。


陪伴而非守候
浏览 119回答 3
3回答

侃侃尔雅

是的,您可以将数据传递给片段但不使用意图而是使用捆绑包,因此必须稍微修改代码。试试下面的代码片段    Bundle bundle1,bundle2;    ViewPager viewPager = (ViewPager) findViewById(R.id.pager);    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());    Home frag1 = new Home();    Grade frag2 = new Grade();    bundle1 = new Bundle();    bundle1.putString("key",data); //pass the data you want to pass    bundle2 = new Bundle();    bundle2.putString("key",data);    frag1.setArguments(bundle1);//set arguments require a bundle     frag2.setArguments(bundle2);//set arguments require a bundle     adapter.addFragment(frag1, "Fragment I");    adapter.addFragment(frag2, "Fragment II");    viewPager.setAdapter(adapter);    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);    tabLayout.setupWithViewPager(viewPager);   //Inside the fragments create another bundle    Bundle b = getIntent().getExtras();    String data = b.getString("key");

幕布斯6054654

这是解决方案,您必须在 Activity A 中创建 2 个方法1. passIntent1()private void passIntent1(){     Intent intent = new Intent(getBaseContext(), SecondActivity.class);     intent.putExtra("INTENT_VALUE", "A");     intent.putExtra("FRAGMENT_A", value for A);     startActivity(intent);}2. passIntent2()private void passIntent2(){     Intent intent = new Intent(getBaseContext(), SecondActivity.class);     intent.putExtra("INTENT_VALUE", "B");     intent.putExtra("FRAGMENT_B", value for B);      startActivity(intent); }现在,在 B 活动中,获取您的 Intent    String value = getIntent().getStringExtra("INTENT_VALUE");    if(value.equalsIgnoreCase("A")){         String FragA =  getIntent().getStringExtra("FRAGMENT_A");    }else if(value.equalsIgnoreCase("B")){         String FragB =  getIntent().getStringExtra("FRAGMENT_B");   }现在将值 FragA 传递给片段 A,将 FragB 传递给片段 B更新代码如下在 Activity 中使用下面的代码在片段中传递值。您必须使用 Bundle 将数据传递给片段Home home = new Home();Bundle homeBundle = new Bundle();homeBundle.putString("KEY","VALUE");// Your Key must same when you get your values in Fragment Homehome.setArguments(homeBundle);同样,您对 Fragment Grade 也做了同样的事情Grade grade = new Grade();Bundle gradeBundle = new Bundle();gradeBundle.putString("KEY","VALUE");grade.setArguments(gradeBundle);将片段添加到适配器adapter.addFragment(home, "Fragment I");adapter.addFragment(grade, "Fragment II");现在在 Fragment 中,使用下面的代码获取值Bundle bundle = getArguments();if(bundle!=null){    String value = bundle.getString("KEY");}希望,现在您可以更好地理解。

慕后森

就我而言,我在 ActivityA 中有一个 fragmentA,它位于 RecyclerView 中。我想将一个 ID 传递给位于 ActivityB 和 ViewPager 内的另一个 fragmentB。我所做的是将 FragmentA 和 Intent 传递给 ActivityB Intent intent = new Intent(getContext(), EachRoomActivity.class); intent.putExtra("room_id", data.getId()); startActivity(intent);在 ActivityB 的 onCreate() 方法中,我得到了 intentExtraIntent intent = getIntent();String room_id = intent.getStringExtra("room_id");这是我定义具有 TabLayout 片段的 Viewpager 的地方。在 ViewPagerAdapter 构造函数中,我添加了对 ID 的要求 public EachRoomViewPagerAdapter(@NonNull FragmentManager fm, String room_id) {    super(fm);    this.room_id = room_id;}因此,在我为 ViewPager 切换视图时,我将 Bundle Extra 添加到片段中。 @NonNull@Overridepublic Fragment getItem(int position) {    Fragment fragment = null;    Bundle args = new Bundle();    args.putString("room_id", room_id);    switch (position) {        case 1:            fragment = new EachRoomMySubscriptionsFragment();            fragment.setArguments(args);            break;        case 2:            fragment = new EachRoomSchedulledEventsFragment();            fragment.setArguments(args);            break;        case 3:            fragment = new EachRoomPreviousEventsFragment();            fragment.setArguments(args);            break;        default:            fragment = new EachRoomAllEventsFragment();            fragment.setArguments(args);    }    return fragment;}现在,在 Fragment 的 OnCreateView() 方法中,我得到了 Bundle ExtraBundle bundle = getArguments();  if(bundle!=null){     room_id = bundle.getString("room_id");  }就是这样。
随时随地看视频慕课网APP

相关分类

Java
我要回答