我有一项活动——MainActivity
。在此活动中,我有两个片段,这两个片段都是我在 xml 中以声明方式创建的。
我正在尝试通过String
用户输入的文本Fragment A
到文本视图Fragment B
。然而,事实证明这是非常困难的。有谁知道我如何实现这一目标?
我知道片段可以使用以下方式获取对其活动的引用getActivity()
。所以我想我会从那里开始?
看一下 Android 开发者页面:http://developer.android.com/training/basics/fragments/communicating.html#DefineInterface
基本上,您在片段 A 中定义一个接口,并让您的 Activity 实现该接口。现在您可以在Fragment中调用接口方法,并且您的Activity将接收该事件。现在在您的活动中,您可以调用第二个片段以使用收到的值更新文本视图
您的 Activity 实现您的界面(请参阅下面的 FragmentA)
public class YourActivity implements FragmentA.TextClicked{
@Override
public void sendText(String text){
// Get Fragment B
FraB frag = (FragB)
getSupportFragmentManager().findFragmentById(R.id.fragment_b);
frag.updateText(text);
}
}
片段A定义了一个Interface,并在需要时调用该方法
public class FragA extends Fragment{
TextClicked mCallback;
public interface TextClicked{
public void sendText(String text);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// This makes sure that the container activity has implemented
// the callback interface. If not, it throws an exception
try {
mCallback = (TextClicked) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement TextClicked");
}
}
public void someMethod(){
mCallback.sendText("YOUR TEXT");
}
@Override
public void onDetach() {
mCallback = null; // => avoid leaking, thanks @Deepscorn
super.onDetach();
}
}
片段 B 有一个公共方法可以对文本执行某些操作
public class FragB extends Fragment{
public void updateText(String text){
// Here you have it
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)