アプリは最初にアクティビティで作成されましたが、問題が発生したため、代わりに 2 つのフラグメントを使用する必要がありFragmentManager
ます。このため、多くのコードをリファクタリングする必要がありました。したがって、私の 2 つのフラグメントはvideoplayerfragment
andvideoRecorderFragment
です。ときどき、videoPlayer 内の動画のリストである JSON を介して取得するリクエストを送信し、動画を作成したい場合はフラグメントを変更します。応答が遅い場合は、要求の OnSuccess を取得して資格情報を保存しようとしますが、フラグメントを置き換えたため、ビデオ プレーヤーのコンテキストは null です。
これは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
ここでは、 から任意のメソッドを呼び出すときに が nullであるため、クラッシュしUserCredentialsPersistence
ます。
私はまた、呼び出し元からそれを呼び出そうとしFragmentManager:
OnSuccess
ましたrequestNotification
:
((VideoHolderActivity) getActivity()).saveToDLCount(new_videos.size());
そして、これは:
public void saveToDLCount(Integer size){
UserCredentialsPersistence.saveToDownloadCount(VideoHolderActivity.this, UserCredentialsPersistence.restoreToDownloadCount(VideoHolderActivity.this) + size);
}
それでも、コンテキストは null です。どうすればこれを乗り越えることができますか?