我有单个Activity和2个片段.Tab屏幕分为2个部分.User Edit在editfield中按下按钮(来自FragmentA),然后应该在同一屏幕上的fragmentB上更新textview < / p>
YourNewFragment ldf = new YourNewFragment();
Bundle args = new Bundle();
args.putString("YourKey", "YourValue");
ldf.setArguments(args);
// Inflate the fragment
getFragmentManager().beginTransaction().add(R.id.container, ldf)
.commit();
这里是Fragment B in new Fragment onCreateView:
String value = getArguments().getString("YourKey");
答案 0 :(得分:3)
这样做的一种方法是在Fragment A上创建一个回调,它在Fragment B上触发一个方法。
片段A:
private FragmentCallback mCallback;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCallback.buttonPressed(textView.getText().toString());
}
});
}
public void setCallback(FragmentCallback callback) {
mCallback = callback;
}
public interface FragmentCallback {
void buttonPressed(String value);
}
片段B:
@Override
public void buttonPressed(String value) {
// do something here with value
}
的活动:
fragmentA.setCallback(fragmentB);
确保Fragment B实现了FragmentCallback接口。
答案 1 :(得分:-1)
我之前做了类似的事情
TopActivity context = (TopActivity) this.getActivity();
我在一个片段中执行此操作,抓取对片段所在活动的引用,从此处我可以使用活动中的变量/函数。所以我用它将信息传递给另一个片段。