在 FragmentPagerAdapter 中的 Fragment 之间传递值
Passing values between Fragments in FragmentPagerAdapter
在 FragmentPageradapter
我有 3 个片段。在前两个片段中有一个 SeekBar
。当 SeekBar
中的任何一个更改其在 fragment1
中的值时,我想更改 fragment2
中的 SeekBar
的值。我怎样才能实现它?
不要保留对该片段的引用并尝试以这种方式更新它。该片段可能为空,或尚未附加。
尝试使用Activity。在 activity 中实现 setter 并在搜索栏更改侦听器中使用它来设置当前值。
在另一个片段中使用 activity 恢复值。
类似于:
((MyActivity) getActivity()).setSeekValue(40);
((MyActivity) getActivity()).getSeekValue();
请注意,这不是一个完美的解决方案,因为 activity 也可以为空(添加空检查)并且您必须转换为 MyActivity。但我认为这是一个可用的快速解决方案。
希望对您有所帮助
一种方法是让您的 activity 负责通信,这意味着当搜索栏发生变化时,片段应该执行如下操作:
((YourActivity) getActivity()).notifySeekBarValueChanged(int);
在你的activity
private void notifySeekBarValueChanged(int value) {
MyFragment frag = getSupportFragmentManager().findFragmentById(int);
frag.seekBarValueChangedTo(value);
}
解决方法如下:
首先创建一个接口
public interface SeekChangeInterface {
public void sendChangedValue(int value)
}
在 FragmentPagerAdapter
所属的 Activity 中实施
在第一个片段中创建一个接口对象
SeekChangeInterface mSeekChangeInterface;
在第一个片段中声明onAttach()
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mSeekChangeInterface = (SeekChangeInterface )activity;
}
在搜索栏中更改监听器调用
mSeekChangeInterface.sendChangedValue(valueofseekbar)
在第二个片段中创建一个方法
public void setSeekBarValue(int progress){
seekBar.setProgress(progress);
}
从 Activity sendChangedValue()
中调用此方法
public void sendChangedValue(int progress){
objectoffragnentpageradapter.getItem(1).setSeekBarValue(progress);
}
希望对您有所帮助
在 FragmentPageradapter
我有 3 个片段。在前两个片段中有一个 SeekBar
。当 SeekBar
中的任何一个更改其在 fragment1
中的值时,我想更改 fragment2
中的 SeekBar
的值。我怎样才能实现它?
不要保留对该片段的引用并尝试以这种方式更新它。该片段可能为空,或尚未附加。
尝试使用Activity。在 activity 中实现 setter 并在搜索栏更改侦听器中使用它来设置当前值。 在另一个片段中使用 activity 恢复值。
类似于:
((MyActivity) getActivity()).setSeekValue(40);
((MyActivity) getActivity()).getSeekValue();
请注意,这不是一个完美的解决方案,因为 activity 也可以为空(添加空检查)并且您必须转换为 MyActivity。但我认为这是一个可用的快速解决方案。
希望对您有所帮助
一种方法是让您的 activity 负责通信,这意味着当搜索栏发生变化时,片段应该执行如下操作:
((YourActivity) getActivity()).notifySeekBarValueChanged(int);
在你的activity
private void notifySeekBarValueChanged(int value) {
MyFragment frag = getSupportFragmentManager().findFragmentById(int);
frag.seekBarValueChangedTo(value);
}
解决方法如下:
首先创建一个接口
public interface SeekChangeInterface { public void sendChangedValue(int value) }
在
FragmentPagerAdapter
所属的 Activity 中实施在第一个片段中创建一个接口对象
SeekChangeInterface mSeekChangeInterface;
在第一个片段中声明
onAttach()
@Override public void onAttach(Activity activity) { super.onAttach(activity); mSeekChangeInterface = (SeekChangeInterface )activity; }
在搜索栏中更改监听器调用
mSeekChangeInterface.sendChangedValue(valueofseekbar)
在第二个片段中创建一个方法
public void setSeekBarValue(int progress){ seekBar.setProgress(progress); }
从 Activity
中调用此方法sendChangedValue()
public void sendChangedValue(int progress){ objectoffragnentpageradapter.getItem(1).setSeekBarValue(progress); }
希望对您有所帮助