Java 插入数据后如何刷新当前片段?
我来自印度尼西亚,我想在插入数据后刷新片段。。我多次尝试刷新一个片段。但它不能工作。 请帮帮我 这是我的密码 班级活动Java 插入数据后如何刷新当前片段?,java,android,fragment,Java,Android,Fragment,我来自印度尼西亚,我想在插入数据后刷新片段。。我多次尝试刷新一个片段。但它不能工作。 请帮帮我 这是我的密码 班级活动 public class MainActivity extends FragmentActivity { public MainActivity() { } DatabaseReference dataBaseref; StorageReference strRef; TextView logout; TabLayout t
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();
}
}
public类MainActivity扩展了FragmentActivity{
公共活动(){
}
数据库参考数据库参考;
存储参考stref;
文本视图注销;
表格布局;
查看页面查看页面;
ViewPagerAdapter viewAdapter=null;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dataBaseref=FirebaseDatabase.getInstance().getReference();
strRef=FirebaseStorage.getInstance().getReference();
tabLayout=findviewbyd(R.id.tab\u布局\u isi\u菜单);
viewPager=findViewById(R.id.view\u pager\u isi\u菜单);
注销=findviewbyd(R.id.text\u注销);
viewAdapter=new ViewPagerAdapter(getSupportFragmentManager(),MainActivity.this);
addFragment(新的isi_列表_beli(),“beli”);
addFragment(新的isi_列表_cek(),“cek数据”);
viewPager.setAdapter(viewAdapter);
tabLayout.setupWithViewPager(viewPager);
logout.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
注销();
}
});
}
私有无效注销(){
AuthUI.getInstance()
.signOut(MainActivity.this)
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
startActivity(新意图(MainActivity.this、LoginActivity.class));
完成();
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
Toast.makeText(MainActivity.this,“+e.getMessage(),Toast.LENGTH_LONG.show();
}
});
}
@凌驾
受保护的void onResume(){
super.onResume();
}
public void onBackPressed(){
super.finish();
}
}
类isi_列表_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();
}
}
公共类isi\u列表\u cek扩展片段{
私有列表视图列表视图;
公共适配器ListCek AdapterListCek=null;
私人ArrayList cekArrayList;
光标;
视图;
浮动操作按钮;
@凌驾
创建时的公共void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
adapterListCek=新adapterListCek(getContext(),R.layout.item_in_list_barang,cekArrayList);
adapterListCek.notifyDataSetChanged();
}
@凌驾
创建视图时的公共视图(@NonNull LayoutInflater inflater、@Nullable ViewGroup container、@NonNull Bundle savedInstanceState){
视图=充气机。充气(R.layout.list\u barang,容器,假);
listView=view.findViewById(R.id.list\u item\u barang);
fab=视图.findViewById(R.id.tambah_barang);
cekArrayList=newarraylist();
adapterListCek=新adapterListCek(getContext(),R.layout.item_in_list_barang,cekArrayList);
setAdapter(adapterListCek);
cursor=fragment\u input\u data.sqlHelper.getData(“从CEK中选择*);
if(cursor.moveToFirst()){
cekArrayList.clear();
做{
int id=cursor.getInt(0);
字符串kode=cursor.getString(1);
String nama=cursor.getString(2);
String jumlah=cursor.getString(3);
字符串harga=cursor.getString(4);
字节[]gambar=cursor.getBlob(5);
添加(新的Cek(id、kode、nama、harga、jumlah、gambar));
}while(cursor.moveToNext());
fragment_input_data.sqlHelper.close();
}
adapterListCek.notifyDataSetChanged();
listView.setOnLongClickListener(新视图.OnLongClickListener(){
@凌驾
仅长按公共布尔值(视图){
返回false;
}
});
fab.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
startActivity(新意图(getContext(),fragment_input_data.class));
}
});
返回视图;
}
@凌驾
恢复时公开作废(){
super.onResume();
}
}
类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);
}
}
公共类ViewPagerAdapter扩展了FragmentStatePagerAdapter{
私有地图标签;
私人碎片管理器MFFragmentManager;
私有上下文;
private final List fragmentList=new ArrayList();
私有最终列表fragmentListTitle=新ArrayList();
public ViewPagerAdapter(FragmentManager格式,上下文mContext){
超级(fm);
}
@凌驾
公共片段getItem(int位置){
返回碎片列表。获取(位置);
}
@凌驾
public int getCount(){
返回fragmentListTitle.size();
//返回2;
}
@非空
@凌驾
公共字符序列getPageTitle(int位置){
返回fragmentListTitle.get(位置);
}
public void addFragment(片段片段、字符串){
碎片列表。添加(碎片);
fragmentListTitle.add(字符串);
}
}
我希望当我插入一些数据时,fragment会自动更新它的视图。调用一个函数:只需发送要重新创建的当前fragment的新实例
replaceFragment(new YourPresentFragment());
该功能可以如下所示:
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();
}
这应该做的工作
请考虑将Android作为相关标签添加到可能的副本中。