【问题标题】:Pass intent to my fragment将意图传递给我的片段
【发布时间】:2013-06-17 09:38:43
【问题描述】:

我在 Activity 中实现了 NFC 前台调度。该代码运行良好,当 NFC 标签靠近我的手机时,会调用 onNewIntent(Intent intent)

现在,我想在调用 onNewIntent(Intent intent) 时显示一个 Fragment(MyFragment.java)。 Fragment 类中定义了resolveIntent(Intent intent) 方法。

这是我的Activity的一些代码:

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 以便我可以处理 onResume()MyFragment 中的意图? p>

【问题讨论】:

标签: android android-layout android-intent nfc


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您可以将意图存储在 Activity 的字段中。添加一个类似 getLastIntent() 的方法,然后在片段中使用 getActivity().getLastIntent() 调用它。

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多