2 回答
![?](http://img1.sycdn.imooc.com/545861f00001be3402200220-100-100.jpg)
TA贡献2037条经验 获得超6个赞
首先,您的代码崩溃了,因为Fragment没有附加到Activity. 所以一个快速的解决方法是添加一个像这样的空检查:
Activity activity = getActivity();
if (activity != null && activity instanceof HomeActivity) {
HomeActivity myactivity = (HomeActivity) activity;
selectedWorkout = myactivity.getSelectedWorkout();
}
也就是说,Activity像这样访问不是一个好习惯,因为它将 Fragment 与特定的Activity. 有几种更好的方法来处理它,例如:
方法一: 使Activity实现成为一个接口SelectedWorkoutProvider,将 getSelectedWorkout() 方法移到那里并强制转换为接口,而不是HomeActivity
方法二: 将选定的锻炼传递给Fragmentvia 参数,如下所示:
Bundle args = new Bundle();
args.putString("selected.workout", getSelectedWorkout());
LandingFragment fragment = new LandingFragment();
fragment.setArguments(args);
然后在Fragment使用中:
getArguments().getString("selected.workout");
以获得价值。
方法三: 使用 将SharedPreferences数据保存Activity在Fragment. 请在此处找到文档SharedPreferences
添加回答
举报