Android使用fragment切换,界面间传值操作

安卓开发中,界面切换使用多的就是运用fragment,那么,如果下一个界面需要上一个界面的值该怎么办呢,本文就是解决这个问题的。也是做个记录,供自己以后方便使用。

    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction transaction = fragmentManager.beginTransaction();
    UserFragment userFragment = new UserFragment ();
    Bundle args = new Bundle();
    args.putInt("name", Name);
    args.putBoolean("info", info);
    userFragment.setArguments(args);
    transaction.replace(R.id.user, userFragment);
    transaction.commit();
代码很简单,懂一点安卓的人几乎都明白哪块是传值部分,就不多说了。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Android中,FragmentFragment可以通过以下几种方式实现: 1. 使用Bundle:在一个Fragment中创建一个Bundle对象,将需要递的数据放入Bundle中,然后通过setArguments()方法将Bundle对象递给另一个Fragment。在另一个Fragment中可以通过getArguments()方法获取递过来的数据。 2. 使用接口回调:在一个Fragment中定义一个接口,另一个Fragment实现该接口并重写接口中的方法,然后在需要的地方调用接口中的方法,将需要递的数据作为参数递给另一个Fragment。 3. 使用ViewModel:ViewModel是一种用于存储和管理UI相关数据的类,可以在多个Fragment共享数据。在一个Fragment中创建一个ViewModel对象,将需要递的数据存储在ViewModel中,然后在另一个Fragment中获取ViewModel对象并获取其中的数据。 以上三种方式都可以实现FragmentFragment的数据递,具体使用哪种方式取决于具体的业务需求和开发习惯。 ### 回答2: FragmentAndroid应用程序界面中的一个可重用组件,它可以被添加到 Activity 中,同时也可以嵌套到其他的 Fragment 中。在开发过程中,经常会遇到需要在不同的 Fragment递数据的需求,本文将详细介绍如何在 FragmentFragment。 1. 使用Activity作为中介 在Activity中定义一个接口,并让Activity和Fragment实现该接口,这样Fragment就可以调用Activity中的方法来递数据了。具体实现步骤如下: 1)创建一个接口类,比如OnDataTransmitListener: public interface OnDataTransmitListener {void onDataTransmit(String data);} 2)在Activity中实现该接口: public class MainActivity extends AppCompatActivity implements OnDataTransmitListener { @Override public void onDataTransmit(String data) { // 在这里处理递来的数据 } } 3)在需要Fragment中,定义一个OnDataTransmitListener类型的变量,并在onAttach方法中将Activity转化为该类型: public class MyFragment extends Fragment { private OnDataTransmitListener listener; … @Override public void onAttach(Context context) { super.onAttach(context); if (context instanceof OnDataTransmitListener) { listener = (OnDataTransmitListener) context; } else { throw new RuntimeException(context.toString() + " must implement OnDataTransmitListener"); } } } 4)在需要Fragment中调用Activity中的方法: public void sendData() { if (listener != null) { listener.onDataTransmit("数据"); } } 2. 使用Bundle 在Bundle中存储数据,然后在另一个Fragment中通过getArguments方法获取到数据,该方法被用来递非常少量的数据,具体步骤如下: 1)在需要Fragment中,创建一个静态方法newInstance: public static MyFragment newInstance(String data) { Bundle args = new Bundle(); args.putString("key_data", data); MyFragment fragment = new MyFragment(); fragment.setArguments(args); return fragment; } 2)在另一个Fragment中获取数据: Bundle args = getArguments(); String data = args.getString("key_data"); 3. 使用广播 如果需要递数据给多个Fragment,则可以使用BroadcastReceiver来递广播,具体步骤如下: 1)在需要Fragment中发送广播: Intent intent = new Intent("com.example.broadcast"); intent.putExtra("data", "我是递的数据"); getContext().sendBroadcast(intent); 2)在另一个Fragment中注册广播接收器并接收广播: private BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String data = intent.getStringExtra("data"); //处理数据 } }; @Override public void onResume() { super.onResume(); IntentFilter filter = new IntentFilter("com.example.broadcast"); getContext().registerReceiver(mReceiver, filter); } @Override public void onPause() { super.onPause(); getContext().unregisterReceiver(mReceiver); } 通过上述方法,可以轻松实现FragmentFragment的数据递。不同的实际需求需要选择不同的方法来递数据。我们需要根据实际情况选择最佳的方法来递数据。 ### 回答3: FragmentAndroid应用程序中的一种UI组件,可以在Activity中定义一系列片段,每个片段代表一个UI模块,通过Fragment的方式实现程序界面的开发。而在Fragment递数据则是Fragment的必备技能之一。 在Fragment递数据可以采用Bundle递简单的数据类型和数据量小的数据,而对于数据类型较为复杂或者需要输大量数据时,可以使用接口回调、ViewModel或者EventBus等方式来解决递数据的问题。 1.使用Bundle递数据: Bundle是Android中一种用于在组件递数据的机制,可以在Fragment使用递到其他Fragment中。通过在Fragment中保存一个Bundle实例,在创建新Fragment时将其添加到bundle中,然后通过整合Bundle实例的方式将数据递给其他Fragment。 2.使用接口回调递数据: 使用接口回调递数据的时候,需要先在Activity中定义一个回调接口。接口会暴露一个回调方法,具体数据从Fragment触发,递到Activity中,再由Activity递到另外一个Fragment上。通常在Fragment中,声明接口回调方法,并在Activity中实现这个接口回调方法,然后在Fragment中调用这个接口。 3.使用ViewModel递数据: ViewModel是一种设计模式,在Fragment使用ViewModel可以使数据的存储和输更为简单。在ViewModel中定义要递的数据,使用ViewModelProvider在Fragment中获取到ViewModel实例,并在Fragment通过ViewModel实例来递数据即可。 4.使用EventBus递数据: EventBus是一种Android中的发布-订阅机制,可以利用它来实现Fragment的数据递。与接口回调和ViewModel相比,EventBus不需要在Fragment和Activity之建立显式的依赖关系,更加松散和灵活。在Fragment中向EventBus发送消息,其他Fragment可以注册并订阅这些消息。 总之,可以根据自身需求和场景来选择不同的方式来解决Fragment递数据的问题。无论使用哪种方式,数据输的准确性和高效性是需要保证的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值