Fix force close when Profile$LoadUserTask completes after activity has been detached from ProfileActivityFragment and ProfileDetailsFragment

This commit is contained in:
Mark Anderson 2013-03-22 22:38:44 +00:00
parent 5654dcdafd
commit 8b383b06b8
3 changed files with 13 additions and 11 deletions

View file

@ -78,7 +78,7 @@ public class Profile extends SherlockFragmentActivity {
@Override
protected void onPreExecute() {
if (TextUtils.isEmpty(userId)) {
detailsFragment.setUser(PrefsUtils.getUserDetails(Profile.this), true);
detailsFragment.setUser(Profile.this, PrefsUtils.getUserDetails(Profile.this), true);
}
}
@ -102,8 +102,8 @@ public class Profile extends SherlockFragmentActivity {
@Override
protected void onPostExecute(Void result) {
if (user != null && detailsFragment != null && activitiesFragment != null) {
detailsFragment.setUser(user, TextUtils.isEmpty(userId));
activitiesFragment.setActivitiesAndUser(activities, user);
detailsFragment.setUser(Profile.this, user, TextUtils.isEmpty(userId));
activitiesFragment.setActivitiesAndUser(Profile.this, activities, user);
}
}
}

View file

@ -1,5 +1,6 @@
package com.newsblur.fragment;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
@ -32,9 +33,9 @@ public class ProfileActivityFragment extends Fragment {
return v;
}
public void setActivitiesAndUser(final ActivitiesResponse[] activities, UserDetails user ) {
public void setActivitiesAndUser(Context context, final ActivitiesResponse[] activities, UserDetails user ) {
// Set the activities, create the adapter
adapter = new ActivitiesAdapter(getActivity(), activities, user);
adapter = new ActivitiesAdapter(context, activities, user);
displayActivities();
}

View file

@ -1,5 +1,6 @@
package com.newsblur.fragment;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Bundle;
@ -43,11 +44,11 @@ public class ProfileDetailsFragment extends Fragment implements OnClickListener
apiManager = new APIManager(getActivity());
}
public void setUser(final UserDetails user, final boolean viewingSelf) {
public void setUser(Context context, final UserDetails user, final boolean viewingSelf) {
this.user = user;
this.viewingSelf = viewingSelf;
if (username != null) {
setUserFields();
setUserFields(context);
}
}
@ -69,13 +70,13 @@ public class ProfileDetailsFragment extends Fragment implements OnClickListener
unfollowButton.setOnClickListener(this);
if (user != null) {
setUserFields();
setUserFields(getActivity());
}
return v;
}
private void setUserFields() {
private void setUserFields(Context context) {
username.setText(user.username);
if (!TextUtils.isEmpty(user.bio)) {
@ -114,8 +115,8 @@ public class ProfileDetailsFragment extends Fragment implements OnClickListener
}
} else {
followButton.setVisibility(View.GONE);
Bitmap userPicture = PrefsUtils.getUserImage(getActivity());
userPicture = UIUtils.roundCorners(userPicture, 5);
Bitmap userPicture = PrefsUtils.getUserImage(context);
userPicture = UIUtils.roundCorners(userPicture, 5);
imageView.setImageBitmap(userPicture);
}
}