Java 在片段中使用MainActivity中的值

Java 在片段中使用MainActivity中的值,java,android,Java,Android,我的应用程序有一个底部导航栏,有三个片段。My Main活动包含一个折叠工具栏,其中包含一个RadioGroup。现在,我在MainActivity中获得所选RadioButton的值,但我需要该值才能在第一个片段中使用它。我该怎么做?是每个片段都包含自己的折叠工具栏,还是在活动之间传递数据 在捆绑包具有已设置的键值对的情况下,可以使用片段的方法。例如,您的fragment对象是您的fragment,那么 Bundle bundle = new Bundle(); bundle.putStrin

我的应用程序有一个底部导航栏,有三个片段。My Main活动包含一个折叠工具栏,其中包含一个RadioGroup。现在,我在MainActivity中获得所选RadioButton的值,但我需要该值才能在第一个片段中使用它。我该怎么做?是每个片段都包含自己的折叠工具栏,还是在活动之间传递数据

  • 捆绑包
    具有已设置的键值对的情况下,可以使用片段的方法。例如,您的fragment对象是
    您的fragment
    ,那么

    Bundle bundle = new Bundle();
    bundle.putString("paramKey", "paramVal");
    
    yourFragment.setArguments(bundle);
    
  • 在片段的
    onCreateView(LayoutInflater、ViewGroup、Bundle)
    中,可以使用
    getArguments()
    方法访问信息

    String value = getArguments().getString("paramKey");  // value = "paramVal"
    // inflate, return
    
  • 有关设置捆绑包值的详细信息,请参阅

  • 捆绑包
    具有已设置的键值对的情况下,可以使用片段的方法。例如,您的fragment对象是
    您的fragment
    ,那么

    Bundle bundle = new Bundle();
    bundle.putString("paramKey", "paramVal");
    
    yourFragment.setArguments(bundle);
    
  • 在片段的
    onCreateView(LayoutInflater、ViewGroup、Bundle)
    中,可以使用
    getArguments()
    方法访问信息

    String value = getArguments().getString("paramKey");  // value = "paramVal"
    // inflate, return
    

  • 有关设置捆绑包值的详细信息,请查看。

    您可以使用put将要传递的值放入
    共享引用中

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
        SharedPreferences.Editor edit = prefs.edit();
        edit.putString("some_key",someValue); //someValue is a var that containns the value that you want to pass
        edit.commit();
    
    然后在片段中,访问值:

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    String value = prefs.getString("some_key","default_value");
    
    另一种效率较低的方法
    创建一个实用程序类,该类将保存所有静态变量。您将能够在该类的所有实例中设置和获取这些变量的值

    您可以使用put将要传递的值放入
    SharedReferences

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
        SharedPreferences.Editor edit = prefs.edit();
        edit.putString("some_key",someValue); //someValue is a var that containns the value that you want to pass
        edit.commit();
    
    然后在片段中,访问值:

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    String value = prefs.getString("some_key","default_value");
    
    另一种效率较低的方法
    创建一个实用程序类,该类将保存所有静态变量。您将能够在该类的所有实例中设置和获取这些变量的值

    您可以在activity类可见的片段中创建一个方法。然后使用此方法,可以传递值。在这个函数的实现中,您可以进行必要的更改,比如片段中的UI更新

    例如—

    MainActivity.java

    MyFragment.java

    CentralFragment.java


    您可以在activity类可见的片段中创建方法。然后使用此方法,可以传递值。在这个函数的实现中,您可以进行必要的更改,比如片段中的UI更新

    例如—

    MainActivity.java

    MyFragment.java

    CentralFragment.java


    这也可以通过这样的方式实现

  • 在活动类中定义接口。在提交片段时捕获接口实例,稍后将使用该片段向片段发送数据
  • class ExampleActivity扩展活动{
    //要由片段类实现的数据侦听器
    OnDataListerner的公共接口{
    公共void sendData(ArrayList数据);
    }
    //提交片段时要捕获的DataListener实例
    OnDataListener片段;
    //提交片段并将其类型转换为OnDataListener
    私有void提交片段(){
    fragment=新的ExampleFragment();
    碎片事务=
    getSupportFragmentManager().beginTransaction();
    事务.replace(R.id.fragment\u容器,示例fragment);
    transaction.addToBackStack(空);
    commit();
    }
    //用于通过接口方法发送数据,接口方法将在片段中定义
    public void sendDataToFragment(){
    sendData(要发送的数据);
    }
    }
    
  • 在您的片段类中实现此接口,一旦Acitivity调用此接口上的任何方法,它将在此片段中被调用

    公共类ExampleFragment扩展片段实现ExampleActivity.OnDataListerner{

    //interface callback which is called when Activity call its method. 
    public void sendData(ArrayList<String> data){
          //Here is your data which can be consumed 
    }
    
    //当活动调用其方法时调用的接口回调。
    公共void sendData(ArrayList数据){
    //这是您可以使用的数据
    }
    
    }


  • 希望这能有所帮助。

    像这样使用也可以实现

  • 在活动类中定义接口。在提交片段时捕获接口实例,稍后将使用该片段向片段发送数据
  • class ExampleActivity扩展活动{
    //要由片段类实现的数据侦听器
    OnDataListerner的公共接口{
    公共void sendData(ArrayList数据);
    }
    //提交片段时要捕获的DataListener实例
    OnDataListener片段;
    //提交片段并将其类型转换为OnDataListener
    私有void提交片段(){
    fragment=新的ExampleFragment();
    碎片事务=
    getSupportFragmentManager().beginTransaction();
    事务.replace(R.id.fragment\u容器,示例fragment);
    transaction.addToBackStack(空);
    commit();
    }
    //用于通过接口方法发送数据,接口方法将在片段中定义
    public void sendDataToFragment(){
    sendData(要发送的数据);
    }
    }
    
  • 在您的片段类中实现此接口,一旦Acitivity调用此接口上的任何方法,它将在此片段中被调用

    公共类ExampleFragment扩展片段实现ExampleActivity.OnDataListerner{

    //interface callback which is called when Activity call its method. 
    public void sendData(ArrayList<String> data){
          //Here is your data which can be consumed 
    }
    
    //当活动调用其方法时调用的接口回调。
    公共void sendData(ArrayList数据){
    //这是您可以使用的数据
    }
    
    }


  • 希望这有帮助。

    是否也可以传递这样的数组或数组列表,或者只传递单个值