2

ActivityにNFC フォアグラウンド ディスパッチを実装しました。コードは正常に動作し、NFC タグが私の電話に近づくと、が呼び出されます。onNewIntent(Intent intent)

ここで、呼び出されたときにフラグメント(MyFragment.java)を表示したいと思いonNewIntent(Intent intent)ます。FragmentクラスにはresolveIntent(Intent intent)メソッドが定義されています。

これが私のアクティビティのコードです:

public class MainActivity extends Activity{
   …
   @Override
   public void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

      FragmentManager fragmentManager = activity.getFragmentManager();
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

      //How to pass the 'intent' to MyFragment?
      MyFragment fragment = new MyFragment();

    fragmentTransaction.replace(R.id.placeholder, fragment, fragmentName);
    fragmentTransaction.addToBackStack(null);
    fragmentTransaction.commit();
   }        
}

MyFragment.javaのコード

public class MyFragment extends Fragment{
    …
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
       ...
    }
    @Override
    public void onResume(){
      super.onResume();

       //How to get 'intent' here 
       resolveIntent(intent);
    }

    private void resolveIntent(Intent intent){
       ...
    }
}

私の質問は、 MyFragment in でインテントを処理できるように、 intentfromonNewIntent(Intent intent)MyFragmentに渡すにはどうすればよいですか?onResume()

4

2 に答える 2

5

Intent はパーセル可能なオブジェクトであることがわかりました。 bundle.putParcelable() メソッドを使用して、インテント インスタンスを次のフラグメントに渡すことができます。

于 2013-06-17T13:30:18.297 に答える
0

アクティビティのフィールドにインテントを保存できます。getLastIntent() のようなメソッドを追加し、フラグメントで getActivity().getLastIntent() を使用して呼び出します。

または、インテントから情報を抽出し、fragment.setArguments() で使用するバンドルを作成し、フラグメントの onStart() メソッドで getArguments() を使用します。

于 2013-06-17T10:07:14.690 に答える