亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 Intent extras 傳遞給 PreviousActivity 中的 Activity

如何將 Intent extras 傳遞給 PreviousActivity 中的 Activity

陪伴而非守候 2023-04-26 16:48:39
我有兩個 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; 提前致謝。
查看完整描述

3 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

是的,您可以將數據傳遞給片段但不使用意圖而是使用捆綁包,因此必須稍微修改代碼。試試下面的代碼片段


? ? 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");



查看完整回答
反對 回復 2023-04-26
?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

這是解決方案,您必須在 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 Home

home.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");

}

希望,現在您可以更好地理解。


查看完整回答
反對 回復 2023-04-26
?
慕后森

TA貢獻1802條經驗 獲得超5個贊

就我而言,我在 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() 方法中,我得到了 intentExtra


Intent 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

@Override

public 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 Extra


Bundle bundle = getArguments();

  if(bundle!=null){

     room_id = bundle.getString("room_id");

  }

就是這樣。


查看完整回答
反對 回復 2023-04-26
  • 3 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號