我试图将数据从子代Fragment
发送到父代Fragment
。我为此编写了一个代码,但它似乎不起作用。Android:使用BroadcastReceiver将数据从一个片段传递到另一个片段
以下是目前的代码。以下是在发件人一方声明。
private void sendPINData(String pin) {
Intent broadcastIntent = new Intent("PINData");
broadcastIntent.putExtra(Keys.PIN, pin);
context.sendBroadcast(broadcastIntent);
getFragmentManager().popBackStack();
}
接着,在接收方(父Fragment
)
下面的行是在onCreateView()
方法。
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(localBroadcastReceiver, new IntentFilter("PINData"));
而这一个是BroadcastReceiver
声明部分。
private final BroadcastReceiver localBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(intent != null) {
pin = intent.getStringExtra(Keys.PIN);
Toast.makeText(context, pin, Toast.LENGTH_SHORT).show();
}
}
};
下面的代码在父Fragment
移动到孩子Fragment
。
PINFragment fragment = new PINFragment();
FragmentTransaction mTransaction = getFragmentManager().beginTransaction();
mTransaction.replace(R.id.main_frame, fragment);
mTransaction.addToBackStack(null);
mTransaction.commit();
请尝试调试一下。 'onReceive()'方法是否被触发? – Lino
这是更好的方法注册您的接收器onResume()并取消注册onPause() – rafsanahmad007
@ rafsanahmad007感谢您的提示。我反映在我的代码:) –