Refresh or force redraw the fragment

后端 未结 8 1679
失恋的感觉
失恋的感觉 2020-11-30 02:10

I have a fragment that inflates an xml layout. My requirement is to update the text size on all my views inside my fragment when my Activity is resumed. I tried



        
8条回答
  •  不知归路
    2020-11-30 02:45

    let us see the below source code. Here fragment name is DirectoryOfEbooks. After completion of the background task, i am the replacing the frame with current fragment. so the fragment gets refreshed and reloads its data

        import android.app.ProgressDialog;
        import android.content.DialogInterface;
        import android.database.Cursor;
        import android.database.sqlite.SQLiteDatabase;
        import android.os.AsyncTask;
        import android.os.Bundle;
        import android.support.v4.app.Fragment;
        import android.support.v4.app.FragmentTransaction;
        import android.support.v4.view.MenuItemCompat;
        import android.support.v7.app.AlertDialog;
        import android.support.v7.widget.DefaultItemAnimator;
        import android.support.v7.widget.GridLayoutManager;
        import android.support.v7.widget.LinearLayoutManager;
        import android.support.v7.widget.RecyclerView;
        import android.support.v7.widget.SearchView;
        import android.view.LayoutInflater;
        import android.view.Menu;
        import android.view.MenuInflater;
        import android.view.MenuItem;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.TextView;
        import android.widget.Toast;
    
        import com.github.mikephil.charting.data.LineRadarDataSet;
    
        import java.util.ArrayList;
        import java.util.List;
    
    
        /**
         * A simple {@link Fragment} subclass.
         */
        public class DirectoryOfEbooks extends Fragment {
    
            RecyclerView recyclerView;
            branchesAdapter adapter;
            LinearLayoutManager linearLayoutManager;
            Cursor c;
            FragmentTransaction fragmentTransaction;
            SQLiteDatabase db;
            List directoryarraylist;
    
            public DirectoryOfEbooks() {
                // Required empty public constructor
            }
            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                     Bundle savedInstanceState) {
    
    
                View view = inflater.inflate(R.layout.fragment_directory_of_ebooks, container, false);
                directoryarraylist = new ArrayList<>();
                db = getActivity().openOrCreateDatabase("notify", android.content.Context.MODE_PRIVATE, null);
                c = db.rawQuery("select * FROM branch; ", null);
    
                if (c.getCount() != 0) {
                    c.moveToFirst();
                    while (true) {
                        //String ISBN = c.getString(c.getColumnIndex("ISBN"));
                        String branch = c.getString(c.getColumnIndex("branch"));
    
                        branch_sync branchSync = new branch_sync(branch);
                        directoryarraylist.add(branchSync);
                        if (c.isLast())
                            break;
                        else
                            c.moveToNext();
                    }
    
                    recyclerView = (RecyclerView) view.findViewById(R.id.directoryOfEbooks);
                    adapter = new branchesAdapter(directoryarraylist, this.getContext());
                    adapter.setHasStableIds(true);
                    recyclerView.setItemAnimator(new DefaultItemAnimator());
                    System.out.println("ebooks");
                    recyclerView.setHasFixedSize(true);
                    linearLayoutManager = new LinearLayoutManager(this.getContext());
                    recyclerView.setLayoutManager(linearLayoutManager);
                    recyclerView.setAdapter(adapter);
                    System.out.println(adapter.getItemCount()+"adpater count");
    
                }
                // Inflate the layout for this fragment
                return view;
            }
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                //setContentView(R.layout.fragment_books);
                setHasOptionsMenu(true);
            }
            public void onPrepareOptionsMenu(Menu menu) {
                MenuInflater inflater = getActivity().getMenuInflater();
                inflater.inflate(R.menu.refresh, menu);
                MenuItem menuItem = menu.findItem(R.id.refresh1);
                menuItem.setVisible(true);
            }
            public boolean onOptionsItemSelected(MenuItem item) {
                if (item.getItemId() == R.id.refresh1) {
                    new AlertDialog.Builder(getContext()).setMessage("Refresh takes more than a Minute").setPositiveButton("Refresh Now", new DialogInterface.OnClickListener() {
    
                        public void onClick(DialogInterface dialog, int which) {
    
                            new refreshebooks().execute();
                        }
                    }).setNegativeButton("Refresh Later", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
    
                        }
                    }).setCancelable(false).show();
    
                }
                return super.onOptionsItemSelected(item);
            }
    
        public class refreshebooks extends AsyncTask{
            ProgressDialog progressDialog;
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
              progressDialog=new ProgressDialog(getContext());
                progressDialog.setMessage("\tRefreshing Ebooks .....");
                progressDialog.setCancelable(false);
                progressDialog.show();
            }
    
            @Override
            protected String doInBackground(String... params) {
                Ebooksync syncEbooks=new Ebooksync();
                String status=syncEbooks.syncdata(getContext());
                return status;
    
            }
    
            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                if(s.equals("error")){
                    progressDialog.dismiss();
                    Toast.makeText(getContext(),"Refresh Failed",Toast.LENGTH_SHORT).show();
                }
                else{
                    fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
                    fragmentTransaction.replace(R.id.mainframe, new DirectoryOfEbooks());
                    fragmentTransaction.commit();
                    progressDialog.dismiss();
                    adapter.notifyDataSetChanged();
                    Toast.makeText(getContext(),"Refresh Successfull",Toast.LENGTH_SHORT).show();
                }
    
            }
        }
    
        }
    

提交回复
热议问题