2 回答

TA貢獻2037條經(jīng)驗 獲得超6個贊
首先,您的代碼崩潰了,因為Fragment沒有附加到Activity. 所以一個快速的解決方法是添加一個像這樣的空檢查:
Activity activity = getActivity();
if (activity != null && activity instanceof HomeActivity) {
HomeActivity myactivity = (HomeActivity) activity;
selectedWorkout = myactivity.getSelectedWorkout();
}
也就是說,Activity像這樣訪問不是一個好習(xí)慣,因為它將 Fragment 與特定的Activity. 有幾種更好的方法來處理它,例如:
方法一: 使Activity實現(xiàn)成為一個接口SelectedWorkoutProvider,將 getSelectedWorkout() 方法移到那里并強制轉(zhuǎn)換為接口,而不是HomeActivity
方法二: 將選定的鍛煉傳遞給Fragmentvia 參數(shù),如下所示:
Bundle args = new Bundle();
args.putString("selected.workout", getSelectedWorkout());
LandingFragment fragment = new LandingFragment();
fragment.setArguments(args);
然后在Fragment使用中:
getArguments().getString("selected.workout");
以獲得價值。
方法三: 使用 將SharedPreferences數(shù)據(jù)保存Activity在Fragment. 請在此處找到文檔SharedPreferences
添加回答
舉報