Android 如何将信息从一个片段发送到另一个承载不同TabbedActivites的片段

Android 如何将信息从一个片段发送到另一个承载不同TabbedActivites的片段,android,android-fragments,fragmentmanager,Android,Android Fragments,Fragmentmanager,我有一个带有3个选项卡的选项卡式活动(OngletCours)。每个选项卡都有一个listView,当我单击它时,会打开一个AlertDialog。其中一个选项是转到另一个有2个选项卡的选项卡式活动(OngletJalonNotes) 我在应用程序中使用数据库。我希望能够根据我在第一个TTabedActivity中单击的项目创建一些“Jalon”(我在TabbedActivity中单击的项目id将是我的db表的FK)。我希望在ListView中显示它们 我是这样做的:在第一个选项卡Activit

我有一个带有3个选项卡的选项卡式活动(OngletCours)。每个选项卡都有一个listView,当我单击它时,会打开一个AlertDialog。其中一个选项是转到另一个有2个选项卡的选项卡式活动(OngletJalonNotes)

我在应用程序中使用数据库。我希望能够根据我在第一个TTabedActivity中单击的项目创建一些“Jalon”(我在TabbedActivity中单击的项目id将是我的db表的FK)。我希望在ListView中显示它们

我是这样做的:在第一个选项卡Activity的片段上,我使用Bundle和FragmentManager发送项目的ID,在片段“Jalon”中,我尝试获取我传递的值,但得到了一个NullPointerException。我怎样才能解决这个问题?我真的需要在第二个片段中获得ID,以便我可以在方法中使用它

以下是AlertDialog正按钮的第一个片段“CoursActuel”代码:

     .setPositiveButton("Ajouter des jalons à ce cours", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {

                            int idcours = cursor_modifier.getInt(0);
                            OngletJalonsAfficher onglet = new OngletJalonsAfficher();
                            Bundle args = new Bundle();
                            args.putInt("idcoursfk",idcours);
                            FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
                            onglet.setArguments(args);
                            fragmentTransaction.replace(R.id.container,onglet,"");
                            fragmentTransaction.commit();
                        }
                    });
在片段“OngletJalonsAfficher”中:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    final View rootView = inflater.inflate(R.layout.activity_onglet_jalon_afficher, container, false);

    //NULLPOINTEREXCEPTION HERE
    int idcours = getArguments().getInt("idcoursfk");

    final ListView lvJalonsPasse;
    lvJalonsPasse =(ListView)rootView.findViewById(R.id.ListJalonsPasse);


    final SimpleCursorAdapter adapter;
    final DatabaseHelper dbhelper = new DatabaseHelper(getActivity());

    Cursor cursor = dbhelper.getAllJalonsPasse(//i need to put the value 'idcours' here...);
    String[] from = { "date_jalon", "designation_jalon" };
    int[] to = { R.id.text_branche_cours, R.id.text_designation };
    adapter = new SimpleCursorAdapter(getContext(), R.layout.list_row, cursor, from, to, 0);
    lvJalonsPasse.setAdapter(adapter);
    adapter.notifyDataSetChanged();
    return rootView;
}

谢谢你们以后的帮助!如果需要更多代码,请告诉我

您创建了一个包,但从未将其附加到片段

类似这样的东西

fragment.setArguments(bundle);

顺便说一句:
intidcours=getArguments().getInt(“idcoursfk”)是潜在的NPE,最好是:

 Bundle bundle = this.getArguments();
        if (bundle != null) {
           idcours = bundle.getInt("idcoursfk");
        }

intidcours=cursor\u修饰符.getInt(0)这里也一样,NPE

哦,我忘了。。。但是为什么我点击时仍然不去看另一个片段呢?我在第一个片段中遗漏了什么吗?例如FragmentTransaction FragmentTransaction=getFragmentManager().beginTransaction();fragment.setArguments(bundle);fragmentTransaction.replace(R.id.you\u fragment\u container,fragment,“”);fragmentTransaction.commit();您编写了“R.id.you_fragment_container”,这是我在选项卡Activity的xml文件中放在我的ViewPager上的id,对吗?如果我在调试模式下运行,在第一个代码的末尾,我转到第二个片段,得到我在包中输入的值,但它不会显示我的新片段。。