如何将变量从活动传递到片段不能解决以前的所有问题(代码片段)

author author     2023-05-12     259

关键词:

如何将一个变量从ViewSyllabusActivity传递给片段尝试了很多例子,很多次我想将数据ViewSyllabusActivity.java传递给Fragment.java但我无法发送数据帮助我提前感谢

view syllabus activity.Java

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_syllabus);

        viewPager = (ViewPager) findViewById(R.id.viewpager);
        setupViewPager(viewPager);

        tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);
        setupTabIcons();

        Intent intent = getIntent();
        int sem = intent.getIntExtra(SubListActivity.EXTRA_NUMBER, 0);
        String sid = intent.getStringExtra(SubListActivity.EXTRA_TEXT);

    
    private void setupViewPager(ViewPager viewPager) 
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());

        adapter.addFrag(new ObjFragment(), "Objectives");
        adapter.addFrag(new ContActivity(), "Contents");
        adapter.addFrag(new LaboActivity(), "Laboratory");
        adapter.addFrag(new TBActivity(), "Text Books");
        adapter.addFrag(new LaboActivity(), "References");
        viewPager.setAdapter(adapter);
    

    class ViewPagerAdapter extends FragmentPagerAdapter 
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) 
            super(manager);
        

        @Override
        public Fragment getItem(int position) 
            return mFragmentList.get(position);
        

        @Override
        public int getCount() 
            return mFragmentList.size();
        

        public void addFrag(Fragment fragment, String title) 
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        

    

fragment.Java

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 

        View view = inflater.inflate(R.layout.fragment_obj, container, false);
        TextView textView = view.findViewById(R.id.obj);
    return view;
    
答案

你在ViewPagerAdapter中发送了一些值,如下所示: -

@Override
public Fragment getItem(int position) 
    Bundle bundle = new Bundle();
    if(position == 0)
        bundle.putInt("position", position);
        bundle.putString("survayType", "your value");
        mFragmentList.get(position).setArguments(bundle);
    else if(position == 1)
        bundle.putInt("position", position);
        bundle.putString("survayType", "your value");
        mFragmentList.get(position).setArguments(bundle);
    else if(position == 2)
        bundle.putInt("position", position);
        bundle.putString("survayType", "your value");
        mFragmentList.get(position).setArguments(bundle);
    else if(position == 3)
        bundle.putInt("position", position);
        bundle.putString("survayType", "your value");
        mFragmentList.get(position).setArguments(bundle);
    else if(position == 4)
        bundle.putInt("position", position);
        bundle.putString("survayType", "your value");
        mFragmentList.get(position).setArguments(bundle);
    

    return mFragmentList.get(position);

并获取片段中的值,如下所示: -

String survayType = getArguments().getString("survayType");

我这样做,它对我有用。

另一答案

使用EventBus。这真的很容易也很好。

1 - 创建活动:

public class SendDataToFragmentEvent
private YourDataType yourData;

 public SendDataToFragmentEvent(YourDataType yourData) 
  this.yourData = yourData;
 

 public void getYourData()return yourData;


而在您的活动中,在您想要将数据发送到片段的那一刻:

EventBus.getDefault.post(new SendDataToFragmentEvent(yourDataHere));

而且你必须等待片段中的这些数据:

@Subscribe(threadMode = ThreadMode.MAIN)  
public void onSendDataToFragmentEvent(SendDataToFragmentEventevent 
 event) 
/* Do something with your data here*/
;

不要忘记EventBus必须知道何时开始收听或停止:

 @Override
 public void onStart() 
    super.onStart();
    EventBus.getDefault().register(this);
 

 @Override
 public void onStop() 
   super.onStop();
   EventBus.getDefault().unregister(this);
 

这是因为Eventbus永远留在这里,直到你的片段/活动被破坏。

注意:片段必须打开才能收听您的活动。

Here是该库的链接,我发现它非常好。

如何将变量从 Activity 传递到 Fragment,并将其传回?

】如何将变量从Activity传递到Fragment,并将其传回?【英文标题】:HowtopassavariablefromActivitytoFragment,andpassitback?【发布时间】:2013-06-3010:52:08【问题描述】:我目前正在制作一个安卓应用程序,我想在活动和片段之间传递一个日期... 查看详情

将数据从片段列表视图项传递到活动字符串变量 onitemclicklistener

】将数据从片段列表视图项传递到活动字符串变量onitemclicklistener【英文标题】:PassingDatafromFragmentlistviewitemtoActivitystringvariableonitemclicklistener【发布时间】:2018-04-1422:10:12【问题描述】:我正在尝试将ListView项从片段传递到活动中... 查看详情

如何将值从一个活动中的片段传递到另一个活动? [复制]

】如何将值从一个活动中的片段传递到另一个活动?[复制]【英文标题】:Howtopassvaluesfromfragmentsinoneactivitytoanotheractivity?[duplicate]【发布时间】:2021-08-0202:23:47【问题描述】:我正在一个有两个活动的应用程序中做一个小测验。一... 查看详情

如何使用菜单按钮将数据从活动传递到android中的片段?

】如何使用菜单按钮将数据从活动传递到android中的片段?【英文标题】:Howtopassdatafromactivitytofragmentinandroidusingmenubutton?【发布时间】:2020-07-2011:59:03【问题描述】:我有这些活动:登录活动主活动个人资料活动MainActivity包含4个... 查看详情

如何将值从片段/活动传递到 xml?

】如何将值从片段/活动传递到xml?【英文标题】:Howtopassvaluefromafragment/activitytoxml?【发布时间】:2022-01-0403:51:29【问题描述】:所以我知道可以在活动和片段之间使用intent传递数据,但是有没有办法将值传递给某些XML文件?说... 查看详情

如何将捆绑从一个活动传递到放置在另一个活动中的片段?

】如何将捆绑从一个活动传递到放置在另一个活动中的片段?【英文标题】:howtopassbundlefromanactivitytoafragmentwhichisplacedinanotheractivity?【发布时间】:2020-05-2820:03:14【问题描述】:我用过bundle来传递flag,但是没用!PersonalInfoFragmentf... 查看详情

如何将上下文从活动传递到服务

】如何将上下文从活动传递到服务【英文标题】:Howtopasscontextfromactivitytoservice【发布时间】:2019-09-0420:46:10【问题描述】:我有一个问题,我需要从服务访问活动中的视图。我认为这样做的一个好方法是传递活动上下文,然后... 查看详情

如何将 LatLng 的数组列表从一个活动传递到另一个活动

】如何将LatLng的数组列表从一个活动传递到另一个活动【英文标题】:HowtopassanarrylistofLatLngfromoneactivitytoanother【发布时间】:2015-09-0509:41:26【问题描述】:我想通过按钮单击将ArrayList的LatLng变量从一个Activity传递给另一个。String... 查看详情

如何将数据从一个活动传递到android中的另一个活动片段? [复制]

】如何将数据从一个活动传递到android中的另一个活动片段?[复制]【英文标题】:Howtopassdatafromoneactivitytootheractivityfragmentinandroid?[duplicate]【发布时间】:2018-04-2306:52:40【问题描述】:我已经将一些键和值数据从一个活动传递到另... 查看详情

Java Android - 将数据从活动发送到片段

...7-12-1608:51:58【问题描述】:过去一天,我一直试图弄清楚如何将数据从Activity传递到Fragment,但还没有走多远。我知道如何将数据从Fragment传递到Activity。我认为我不能针对我的情况使用捆绑包,因为我的Fragment已经创建,并且需... 查看详情

使用可序列化将对象从活动传递到活动的正确方法?

】使用可序列化将对象从活动传递到活动的正确方法?【英文标题】:ProperwayofpassingObjectfromActivitytoActivityusingSerializable?【发布时间】:2015-10-0807:40:50【问题描述】:我正在尝试将一个对象从一个活动传递到另一个活动,我的对... 查看详情

如果几何着色器处于活动状态,如何将信息从顶点着色器传递到片段着色器?

】如果几何着色器处于活动状态,如何将信息从顶点着色器传递到片段着色器?【英文标题】:Howtopassinformationfromvertexshadertofragmentshaderifthereisageometryshaderactive?【发布时间】:2018-03-3108:24:17【问题描述】:在添加几何着色器之前... 查看详情

将整个捆绑(对象)本身从某个活动的片段传递和接收到另一个活动

】将整个捆绑(对象)本身从某个活动的片段传递和接收到另一个活动【英文标题】:Passingandreceivinganentirebundle(object)itselffromfragmentofsomeactivitytoanotheractivity【发布时间】:2021-03-0508:37:29【问题描述】:我正在开发一个android应用... 查看详情

如何将数据从main活动传递到另一个活动(代码片段)

我想将用户输入的名称和号码传递给我的Android应用程序中的FakeRinger类。我在putExtra()的意图中使用了fab.setOnClickListener方法。这是我在MainActivity中使用的代码publicclassMainActivityextendsAppCompatActivitypublicstaticfinalStringLOG_TAG="MainActivit 查看详情

将 Google API 客户端对象从活动传递到滑动选项卡片段

...dle、Serializable和args的newInstance方法,但我的问题是我应该如何以及在何处调用 查看详情

我想将数据从活动传递到片段[重复]

】我想将数据从活动传递到片段[重复]【英文标题】:IWantToPassDataFromActivitytoFragment[duplicate]【发布时间】:2021-07-2901:24:21【问题描述】:我是android开发的新手我正在尝试将数据从Activity传递到Fragment我从另一个活动中获得的这些... 查看详情

如何将数据从 Intent 传递到 Fragment

】如何将数据从Intent传递到Fragment【英文标题】:HowToPassdataFromIntentToFragment【发布时间】:2021-07-1200:52:59【问题描述】:我是kotlin的新手,我想将我的活动中的数据发送到我的选项卡片段,所以在用户数据之后,我想显示与用户... 查看详情

将接口从片段传递到kotlin中的活动

】将接口从片段传递到kotlin中的活动【英文标题】:Passinterfacefromfragmenttoactivityinkotlin【发布时间】:2021-03-0508:28:59【问题描述】:我想将我的界面对象从我的片段传递到我在Kotlin中的新活动。我尝试通过发送作为构造函数参数... 查看详情