我試圖將數據從子代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感謝您的提示。我反映在我的代碼:) –