将Intent从活动传递到片段

时间:2016-08-30 12:40:11

标签: java android android-fragments android-intent

如何将我的活动中收到的Intent传递给片段? 我在我的活动中有这个方法,当活动收到一个新的Intent时会创建一个新的Fragment。

@Override
public void onNewIntent(Intent intent){
    FragmentTransaction fragmentTransaction = this.getSupportFragmentManager().beginTransaction();
    fragmentTransaction.replace(R.id.frame_principale, new BumpFragment());
    fragmentTransaction.commit();
}

然后,在片段类中,我有这个方法,它适用于活动收到的新Intent:

        private void searchForBump(){

                boolean inNoleggio = prefs.getBoolean(Keys.IN_NOLEGGIO, false);

                if (!inNoleggio) {

                    Intent intent = this.getActivity().getIntent();
                    if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
                        Parcelable[] rawMessages = intent.getParcelabl

    eArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
                    NdefMessage message = (NdefMessage) rawMessages[0];
                    String payload = new String(message.getRecords()[0].getPayload());
                    String[] data = payload.split(":");
                //other stuff 
}

在fragment的onStart和Resume方法中调用此方法。 这段代码和逻辑是否正确?因为测试应用程序,当收到意图时没有任何反应。自然地,在应用程序的清单中,我为活动设置了intent-filter

1 个答案:

答案 0 :(得分:0)

您可以将fragment中的intent值作为参数传递

on activity将参数作为bundle传递 fragment.setargument(data); data是一个包实例

在片段中,您可以在片段

中的活动创建的回调方法中检索此参数

通过getActivity访问片段中的activity方法,并使用您的活动名称

的类型转换