我尝试将孩子Fragment
的数据发送到父Fragment
。我为此编写了一个代码,但它似乎没有用。
到目前为止,这是代码。以下是在发件人方面声明的。
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();
答案 0 :(得分:1)
您正在使用本地广播(仅限App分数),但您正在将广播作为全球发送..我认为您应该使用order
代替LocalBroadcastManager.getInstance(Context ctx)
发送广播。请参阅下面更新的代码:
Context
P.S。别忘了取消注册接收器
祝你好运,'。答案 1 :(得分:0)
private void sendPINData(String pin) {
Intent broadcastIntent = new Intent("PINData");
broadcastIntent.putExtra(Keys.PIN, pin);
LocalBroadcastManager.getInstance(context).sendBroadcast(broadcastIntent);
getFragmentManager().popBackStack();
}
请试试这个!