Java 在片段中使用MainActivity中的值
我的应用程序有一个底部导航栏,有三个片段。My Main活动包含一个折叠工具栏,其中包含一个RadioGroup。现在,我在MainActivity中获得所选RadioButton的值,但我需要该值才能在第一个片段中使用它。我该怎么做?是每个片段都包含自己的折叠工具栏,还是在活动之间传递数据Java 在片段中使用MainActivity中的值,java,android,Java,Android,我的应用程序有一个底部导航栏,有三个片段。My Main活动包含一个折叠工具栏,其中包含一个RadioGroup。现在,我在MainActivity中获得所选RadioButton的值,但我需要该值才能在第一个片段中使用它。我该怎么做?是每个片段都包含自己的折叠工具栏,还是在活动之间传递数据 在捆绑包具有已设置的键值对的情况下,可以使用片段的方法。例如,您的fragment对象是您的fragment,那么 Bundle bundle = new Bundle(); bundle.putStrin
捆绑包
具有已设置的键值对的情况下,可以使用片段的方法。例如,您的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数据){
//这是您可以使用的数据
}
}
希望这有帮助。是否也可以传递这样的数组或数组列表,或者只传递单个值