将意图传递给我的片段

时间:2013-06-17 09:38:43

标签: android android-layout android-intent nfc

我已在活动中实施了 NFC前台发送。代码工作正常,当NFC标签靠近我的手机时,onNewIntent(Intent intent)被调用。

现在,我想在调用onNewIntent(Intent intent)时显示 Fragment (MyFragment.java)。 片段类中定义了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){
       ...
    }
}

我的问题是如何将intentonNewIntent(Intent intent)传递到 MyFragment ,以便我可以在{{{>> MyFragment 中处理意图1}}?

2 个答案:

答案 0 :(得分:4)

我发现Intent是一个可以对象的对象,我可以使用bundle.putParcelable()方法将intent实例传递给下一个片段。

答案 1 :(得分:0)

您可以将意图存储在活动的字段中。添加一个像getLastIntent()这样的方法,并使用getActivity()在你的片段中调用它.getLastIntent()。

或者从意图中提取信息并创建一个将与fragment.setArguments()一起使用的Bundle,并在片段的onStart()方法中使用getArguments()