2

I will create a 4 fragment page.If i move to the home fragment means,the fragment should be refreshed.If any changes done in another fragment means it will update in home fragment.Any one help me to refresh the home fragment.

public class HomeFragment extends Fragment {

    ImageButton explore,chat;

    //Facebook Declaration
    private CallbackManager callbackManager;
    private LoginButton FbLoginButton;

    String fb_call = "fb";

    ListView recyclerView;
    RelativeLayout emptyView;
    private boolean mLoading = false;

    //Check Facebook
    Boolean Check_activity = false;
    List<String> fb_friends_list= new ArrayList<String>();

    private List<FeedItem> feedsList= new ArrayList<FeedItem>();
    CustomHomeFragmentAdapter adapter;

    String LiveUrl,userID,Facebook_Token;

    protected static final String TAG = "HomeFragment";

    public static final String MY_PREFS_NAME = "MyPrefsFile";
    boolean loading = true;
    int pastVisiblesItems, visibleItemCount, totalItemCount;

    //Progresswheel
    ProgressWheel pw;
    ResetPasswordActivity obj=new ResetPasswordActivity();


    public HomeFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        FacebookSdk.sdkInitialize(getContext());
        callbackManager = CallbackManager.Factory.create();

        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
        LiveUrl= sharedPreferences.getString("liveurl3", null);
        System.out.println("Liveurl1" + LiveUrl);

        SharedPreferences prefs1 = getContext().getSharedPreferences(MY_PREFS_NAME, getContext().MODE_PRIVATE);
        userID= prefs1.getString("userid", null);
        System.out.println("userid" + userID);


    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View v = inflater.inflate(R.layout.fragment_home, container, false);
        FontChangeCrawler fontChanger = new FontChangeCrawler(getContext().getAssets(), "arial.ttf");
        fontChanger.replaceFonts((ViewGroup) v);

        // Inflate the layout for this fragment

        System.out.println("Home");

        pw=(ProgressWheel)v.findViewById(R.id.pw_spinner);
        obj.styleRandom(pw, v.getContext());

        emptyView=(RelativeLayout)v.findViewById(R.id.empty_view);
        recyclerView=(ListView)v.findViewById(R.id.recycler_view);


        adapter=new CustomHomeFragmentAdapter(getContext(),feedsList,HomeFragment.this);
        recyclerView.setAdapter(adapter);
        adapter.notifyDataSetChanged();
        getHomePosts();

        recyclerView.setRecyclerListener(new AbsListView.RecyclerListener() {
            @Override
            public void onMovedToScrapHeap(View view) {
                VideoView videoView = (VideoView) view.findViewById(R.id.post_video);
                videoView.stopPlayback();
            }
        });



        explore= (ImageButton) v.findViewById(R.id.explore_page);
        chat= (ImageButton) v.findViewById(R.id.edit_page);

        chat.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent chat=new Intent(getContext(),ChatActivity.class);
                startActivity(chat);
            }
        });

        FbLoginButton = (LoginButton) v.findViewById(R.id.fb_login_button);
        FbLoginButton.setBackgroundResource(R.drawable.rounded_button);
        FbLoginButton.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
        FbLoginButton.setCompoundDrawablePadding(0);
        FbLoginButton.setPadding(0, 0, 0, 0);
        FbLoginButton.setText("Find People to follow");
        FbLoginButton.setTextColor(Color.WHITE);
        List<String> permissions = new ArrayList<>();
        permissions.add("user_friends");
        FbLoginButton.setReadPermissions(permissions);
        FbLoginButton.setFragment(this);

        FbLoginButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //FbLoginButton.setEnabled(false);
            }
        });
        FbLoginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {

                Facebook_Token = loginResult.getAccessToken().getToken();

                new GraphRequest(
                        AccessToken.getCurrentAccessToken(),
                        "/me/friends",
                        null,
                        HttpMethod.GET,
                        new GraphRequest.Callback() {
                            public void onCompleted(GraphResponse response) {
                                LoginManager.getInstance().logOut();

                                System.out.println("response for friends" + response.toString());
                                JSONObject obj = response.getJSONObject();
                                System.out.println("obj" + obj);
                                JSONArray arr;
                                try {
                                    arr = obj.getJSONArray("data");
                                    System.out.println("array value" + arr);
                                    if (arr.length() != 0) {

                                        for (int i = 0; i < arr.length(); i++) {
                                            JSONObject fbfriends = arr.getJSONObject(i);
                                            String id = fbfriends.getString("id");
                                            fb_friends_list.add(id);
                                            System.out.println("facebook friends list" + fb_friends_list);
                                            String ids = fb_friends_list.toString().replaceAll("\\[", "").replaceAll("\\]", "").replaceAll(" ", "");

                                            Intent intent = new Intent(getContext(), FacebookFriendsActivity.class);
                                            intent.putExtra("friendslist", ids);
                                            intent.putExtra("fb_call", fb_call);
                                            startActivity(intent);

                                        }
                                    } else {
                                        Toast.makeText(getContext(), "No Friends are using Hotfuse", Toast.LENGTH_SHORT).show();
                                    }


                                } catch (JSONException e) {
                                    System.out.println("inside exception");
                                    e.printStackTrace();
                                }

                            }
                        }
                ).executeAsync();
            }


            @Override
            public void onCancel() {
                Toast.makeText(getActivity(), "Login cancelled by user!", Toast.LENGTH_LONG).show();
                System.out.println("Facebook Login failed!!");

            }

            @Override
            public void onError(FacebookException e) {
                Toast.makeText(getActivity(), "Login unsuccessful!", Toast.LENGTH_LONG).show();
                System.out.println("Facebook Login failed!!");
            }
        });

        explore.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getChildFragmentManager()
                        .beginTransaction()
                        .replace(
                                R.id.homefragment,
                                new ExploreFragment(),
                                ExploreFragment.TAG)
                        .addToBackStack(null)
                        .commit();
            }
        });

        return v;

    }


    //Call Facebook StartActivity
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        callbackManager.onActivityResult(requestCode, resultCode, data);
    }

    public void getHomePosts()
    {
        pw.setVisibility(View.VISIBLE);
        pw.startSpinning();
        //String url=LiveUrl+"followingactivities?user_id="+userID;
        String url=LiveUrl+"post_data/?user_id="+userID;
        System.out.println("URL IS" + url);
        JsonArrayRequest movieReq = new JsonArrayRequest(url,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        // Parsing json
                        for (int i = 0; i < response.length(); i++) {
                            try {
                                pw.setVisibility(View.GONE);
                                pw.stopSpinning();
                                JSONObject suggested_jsonobj = response.getJSONObject(i);
                                FeedItem movie = new FeedItem();
                                System.out.println("user_id value" +suggested_jsonobj.optString("user_id"));
                                if (!suggested_jsonobj.optString("user_id").isEmpty())
                                {
                                    movie.setTitle(suggested_jsonobj.optString("username"));
                                    movie.setId(suggested_jsonobj.optString("user_id"));
                                    movie.setPostID(suggested_jsonobj.optString("id"));
                                    movie.setVideoID(suggested_jsonobj.optString("video_src"));
                                    movie.setVideoImage(suggested_jsonobj.optString("image_thumb"));
                                    movie.setThumbnail(suggested_jsonobj.optString("profile_image"));
                                    movie.setDate(suggested_jsonobj.optString("created"));
                                    movie.setVotecount(suggested_jsonobj.optString("votecount"));
                                    movie.setPost(suggested_jsonobj.optString("resize1"));
                                    movie.setPrivacyStatus(suggested_jsonobj.optString("privacy_status"));
                                    movie.setLikedStatus(suggested_jsonobj.optString("like_status"));
                                    movie.setLikedCount(suggested_jsonobj.optString("like_count"));
                                    movie.setLikeduserID(suggested_jsonobj.optString("like_user_id1"));
                                    movie.setLikedUserName(suggested_jsonobj.optString("like_username1"));
                                    movie.setCommentCount(suggested_jsonobj.optString("comment_count"));
                                    movie.setCaption(suggested_jsonobj.optString("caption"));
                                    movie.setCaptionUserName(suggested_jsonobj.optString("captionusername"));
                                    movie.setTagCount(suggested_jsonobj.optString("tag_count"));
                                    if (!suggested_jsonobj.optString("image_tag").matches("null")) {
                                        final JSONArray arr = new JSONArray(suggested_jsonobj.optString("image_tag"));
                                        final JSONObject jObj = arr.optJSONObject(0);
                                        movie.setx1Tag(jObj.optString("x1"));
                                        movie.sety1Tag(jObj.optString("y1"));
                                        movie.setx1userName(jObj.optString("name1"));
                                        movie.setx1userID(jObj.optString("user_id1"));
                                        movie.setx2Tag(jObj.optString("x2"));
                                        movie.sety2Tag(jObj.optString("y2"));
                                        movie.setx2userName(jObj.optString("name2"));
                                        movie.setx2userID(jObj.optString("user_id2"));
                                        movie.setx3Tag(jObj.optString("x3"));
                                        movie.sety3Tag(jObj.optString("y3"));
                                        movie.setx3userName(jObj.optString("name3"));
                                        movie.setx3userID(jObj.optString("user_id3"));
                                        movie.setx4Tag(jObj.optString("x4"));
                                        movie.sety4Tag(jObj.optString("y4"));
                                        movie.setx4userName(jObj.optString("name4"));
                                        movie.setx4userID(jObj.optString("user_id4"));

                                    }if (!suggested_jsonobj.optString("comment").isEmpty()) {
                                    final JSONArray arr = new JSONArray(suggested_jsonobj.optString("comment"));

                                    final JSONObject jObj = arr.optJSONObject(0);
                                    //Comment 1
                                    movie.setCommentID(jObj.optString("id"));
                                    movie.setCommentuserName(jObj.optString("username"));
                                    movie.setCommentProPic(jObj.optString("image"));
                                    movie.setCommentText(jObj.optString("comment"));

                                    //Comment 2
                                    final JSONObject jObj1 = arr.optJSONObject(1);
                                    if(jObj1!=null) {
                                        movie.setCommentID2(jObj1.optString("id"));
                                        movie.setCommentuserName2(jObj1.optString("username"));
                                        movie.setCommentProPic2(jObj1.optString("image"));
                                        movie.setCommentText2(jObj1.optString("comment"));
                                    }

                                    //Comment 3
                                    final JSONObject jObj2 = arr.optJSONObject(2);
                                    if(jObj2!=null) {
                                        movie.setCommentID3(jObj2.optString("id"));
                                        movie.setCommentuserName3(jObj2.optString("username"));
                                        movie.setCommentProPic3(jObj2.optString("image"));
                                        movie.setCommentText3(jObj2.optString("comment"));
                                    }
                                }
                                    feedsList.add(movie);
                                }
                                else
                                {
                                    recyclerView.setVisibility(View.GONE);
                                    emptyView.setVisibility(View.VISIBLE);
                                }





                            } catch (JSONException e) {
                                pw.setVisibility(View.GONE);
                                pw.stopSpinning();
                                e.printStackTrace();
                            }

                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                if(error instanceof NoConnectionError) {
                    pw.setVisibility(View.GONE);
                    pw.stopSpinning();
                    Toast.makeText(getContext(), "Sorry we couldn't complete your request.Please try again in a moment", Toast.LENGTH_SHORT).show();
                }

                VolleyLog.d(TAG, "Error: " + error.getMessage());


            }
        });

        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(movieReq);
        movieReq.setRetryPolicy(new DefaultRetryPolicy(DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 2, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    }

    /* public void switchContent(int id,String id1) {
         getChildFragmentManager()
                 .beginTransaction()
                 .replace(id, ParallaxProfileActivity.newInstance(id1), ParallaxProfileActivity.TAG)
                 .commit();
     }*/
/*
    @Override
    public void onDetach() {
        super.onDetach();

        try {
            Field childFragmentManager = Fragment.class.getDeclaredField("mChildFragmentManager");
            childFragmentManager.setAccessible(true);
            childFragmentManager.set(this, null);

        } catch (NoSuchFieldException e) {
            throw new RuntimeException(e);
        } catch (IllegalAccessException e) {
            throw new RuntimeException(e);
        }*/
    public class MyCustomLayoutManager extends LinearLayoutManager {
        private static final float MILLISECONDS_PER_INCH = 50f;
        private Context mContext;

        public MyCustomLayoutManager(Context context) {
            super(context);
            mContext = context;
        }

        @Override
        public void smoothScrollToPosition(RecyclerView recyclerView,
                                           RecyclerView.State state, final int position) {

            LinearSmoothScroller smoothScroller =
                    new LinearSmoothScroller(mContext) {

                        //This controls the direction in which smoothScroll looks
                        //for your view
                        @Override
                        public PointF computeScrollVectorForPosition
                        (int targetPosition) {
                            return MyCustomLayoutManager.this
                                    .computeScrollVectorForPosition(targetPosition);
                        }

                        //This returns the milliseconds it takes to
                        //scroll one pixel.
                        @Override
                        protected float calculateSpeedPerPixel
                        (DisplayMetrics displayMetrics) {
                            return MILLISECONDS_PER_INCH/displayMetrics.densityDpi;
                        }
                    };

            smoothScroller.setTargetPosition(position);
            startSmoothScroll(smoothScroller);
        }
    }

}

`

suriya
  • 21
  • 2

1 Answers1

0

I have add this coding inside the onCreate function to refresh the home fragment but it shows error

Fragment frg = null;
frg = getSupportFragmentManager().findFragmentByTag("HomeFragment");
final FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.detach(frg);
ft.attach(frg);
ft.commit();
suriya
  • 41
  • 4
  • If there are any Views in the Fragment, won't this cause them to lose their state? – OneCricketeer Mar 17 '16 at 04:16
  • Then what to do for refreshing the home fragment – suriya Mar 17 '16 at 08:26
  • I'm not sure what "refresh" means. Just perform whatever operation needs to happen. Call `setText` on some textviews, `notifyDatasetChanged` on some adapter, etc. Wrap it all in a `refresh()` method maybe... All I'm saying is that detach and reattach doesn't seem to be a good solution – OneCricketeer Mar 17 '16 at 08:31