0

i'm from indonesia, i want to refresh a fragment after i insert a data to it.. i have try many times to refresh a fragment. but it can't work. please help me..

here's my code..

class MainActivity

public class MainActivity extends FragmentActivity {

    public MainActivity() {

    }

    DatabaseReference dataBaseref;
    StorageReference strRef;
    TextView logout;
    TabLayout tabLayout;
    ViewPager viewPager;
    ViewPagerAdapter viewAdapter = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        dataBaseref = FirebaseDatabase.getInstance().getReference();
        strRef = FirebaseStorage.getInstance().getReference();

        tabLayout = findViewById(R.id.tab_layout_isi_menu);
        viewPager = findViewById(R.id.view_pager_isi_menu);
        logout = findViewById(R.id.text_logout);

        viewAdapter = new ViewPagerAdapter(getSupportFragmentManager(), MainActivity.this);

        viewAdapter.addFragment(new isi_list_beli(), "Beli");
        viewAdapter.addFragment(new isi_list_cek(), "Cek Data");

        viewPager.setAdapter(viewAdapter);
        tabLayout.setupWithViewPager(viewPager);


        logout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                logOut();
            }
        });


    }

    private void logOut() {
        AuthUI.getInstance()
                .signOut(MainActivity.this)
                .addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        startActivity(new Intent(MainActivity.this, LoginActivity.class));
                        finish();
                    }
                }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Toast.makeText(MainActivity.this, "" + e.getMessage(), Toast.LENGTH_LONG).show();
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
    }

    public void onBackPressed() {
        super.finish();
    }

}

class isi_list_cek

public class isi_list_cek extends Fragment {

    private ListView listView;
    public AdapterListCek adapterListCek = null;
    private ArrayList<Cek> cekArrayList;
    Cursor cursor;
    View view;
    FloatingActionButton fab;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        adapterListCek = new AdapterListCek(getContext(), R.layout.item_in_list_barang, cekArrayList);
        adapterListCek.notifyDataSetChanged();
    }

    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @NonNull Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.list_barang, container, false);

        listView = view.findViewById(R.id.list_item_barang);
        fab = view.findViewById(R.id.tambah_barang);

        cekArrayList = new ArrayList<>();
        adapterListCek = new AdapterListCek(getContext(), R.layout.item_in_list_barang, cekArrayList);
        listView.setAdapter(adapterListCek);

        cursor = fragment_input_data.sqlHelper.getData("SELECT * FROM CEK");

        if(cursor.moveToFirst()){
            cekArrayList.clear();
            do{
                int id = cursor.getInt(0);
                String kode = cursor.getString(1);
                String nama = cursor.getString(2);
                String jumlah = cursor.getString(3);
                String harga = cursor.getString(4);
                byte[] gambar = cursor.getBlob(5);

                cekArrayList.add(new Cek(id, kode, nama, harga, jumlah, gambar));
            }while (cursor.moveToNext());
            fragment_input_data.sqlHelper.close();
        }

        adapterListCek.notifyDataSetChanged();


        listView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                return false;
            }
        });

        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(getContext(), fragment_input_data.class));
            }
        });


        return view;
    }

    @Override
    public void onResume() {
        super.onResume();
    }
}

class ViewPagerAdapter

public class ViewPagerAdapter extends FragmentStatePagerAdapter {

    private Map<Integer, String> mFragmentTags;
    private FragmentManager mFragmentManager;
    private Context mContext;
    private final List<Fragment> fragmentList = new ArrayList<>();
    private final List<String> fragmentListTitle = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager fm, Context mContext) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return fragmentList.get(position);

    }
    @Override
    public int getCount() {
        return fragmentListTitle.size();
        //return 2;


    }
    @NonNull
    @Override
    public CharSequence getPageTitle(int position) {
        return fragmentListTitle.get(position);
    }
    public void addFragment (Fragment fragment, String string){
        fragmentList.add(fragment);
        fragmentListTitle.add(string);
    }
}

i expect when i insert some data, fragment will automatically update it's view.

1 Answers1

0

call a function as: just send the new instance of present fragment that you want to recreate

replaceFragment(new YourPresentFragment());

the function can be as below:

private void replaceFragment(Fragment fragment) {

      String fragmentTag = fragment.getClass().getName();

      FragmentManager manager = getFragmentManager();
      FragmentTransaction ft = manager.beginTransaction();
      ft.replace(R.id.fragments, fragment, fragmentTag);
      ft.addToBackStack("fragments");
      ft.commit();

 }

this should do the job

unownsp
  • 727
  • 5
  • 19