Android 如何将信息从一个片段发送到另一个承载不同TabbedActivites的片段
我有一个带有3个选项卡的选项卡式活动(OngletCours)。每个选项卡都有一个listView,当我单击它时,会打开一个AlertDialog。其中一个选项是转到另一个有2个选项卡的选项卡式活动(OngletJalonNotes) 我在应用程序中使用数据库。我希望能够根据我在第一个TTabedActivity中单击的项目创建一些“Jalon”(我在TabbedActivity中单击的项目id将是我的db表的FK)。我希望在ListView中显示它们 我是这样做的:在第一个选项卡Activity的片段上,我使用Bundle和FragmentManager发送项目的ID,在片段“Jalon”中,我尝试获取我传递的值,但得到了一个NullPointerException。我怎样才能解决这个问题?我真的需要在第二个片段中获得ID,以便我可以在方法中使用它 以下是AlertDialog正按钮的第一个片段“CoursActuel”代码:Android 如何将信息从一个片段发送到另一个承载不同TabbedActivites的片段,android,android-fragments,fragmentmanager,Android,Android Fragments,Fragmentmanager,我有一个带有3个选项卡的选项卡式活动(OngletCours)。每个选项卡都有一个listView,当我单击它时,会打开一个AlertDialog。其中一个选项是转到另一个有2个选项卡的选项卡式活动(OngletJalonNotes) 我在应用程序中使用数据库。我希望能够根据我在第一个TTabedActivity中单击的项目创建一些“Jalon”(我在TabbedActivity中单击的项目id将是我的db表的FK)。我希望在ListView中显示它们 我是这样做的:在第一个选项卡Activit
.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,对吗?如果我在调试模式下运行,在第一个代码的末尾,我转到第二个片段,得到我在包中输入的值,但它不会显示我的新片段。。