该应用程序最初是使用活动制作的,但由于一个问题,我必须使用 2 个片段FragmentManager
来代替。现在,正因为如此,我不得不重构很多代码。所以我的 2 个片段是videoplayerfragment
and videoRecorderFragment
。有时我发送一个请求以通过 JSON 获取 videoPlayer 中的视频列表,如果我想制作视频,我会更改片段。现在如果响应迟了,我会得到请求的 OnSuccess,试图保存凭证,但是视频播放器的上下文为空,因为我已经替换了片段。
这是UserCredentialsPersistence
课程的一部分:
private static SharedPreferences obtainSharedPreferences(Context context) {
return context.getSharedPreferences(USER_CREDENTIALS_KEY,
Context.MODE_PRIVATE);
}
public static boolean saveToDownloadCount(Context context,
int download_count) {
Editor e = context.getSharedPreferences(USER_CREDENTIALS_KEY,
Context.MODE_PRIVATE).edit();
e.putInt(USER_TO_DL_COUNT_KEY, download_count);
return e.commit();
}
这是 的重要部分VideoPlayerFragment
:
videoRequest.requestNotification = new RequestNotification() {
@Override
public void onSuccess(Object sender) {
Log.d("@VideoPlayerActivity", "success");
playHideUpAnimation();
new_videos = new ArrayList<VideoData>(VideoDataManager.getInstance().getNewVideos());
UserCredentialsPersistence.saveToDownloadCount(getActivity(), UserCredentialsPersistence.restoreToDownloadCount(getActivity()) + new_videos.size());
all_videos = videodb.getTotalVideoListFromDB();
在这里它崩溃,因为getActivity
从调用任何方法时UserCredentialsPersistence
.
我也尝试从FragmentManager:
OnSuccess
at the call 中调用它requestNotification
:
((VideoHolderActivity) getActivity()).saveToDLCount(new_videos.size());
这是:
public void saveToDLCount(Integer size){
UserCredentialsPersistence.saveToDownloadCount(VideoHolderActivity.this, UserCredentialsPersistence.restoreToDownloadCount(VideoHolderActivity.this) + size);
}
但是,上下文仍然为空。知道我怎么能克服这个吗?