我有3个片段。 (HOME,MENU,CART)
当用户点击MENU FRAGMENT中的项目时,单击的项目将进入SQLite表格(使用INSERT QUERY)。
在购物车片段中,我使用选择查询显示用户从“菜单碎片”中选择的项目。
所以,这一切都在发生。
问题:
快照:
要获取CART FRAGMENT中的更新数据,我必须单击HOME片段,然后单击MENU片段然后单击CART片段。
MENU碎片代码:
以下是MENU Fragment的代码:我在Add to cart Button上调用此方法
public void onAddToCart(){
databaseHelper.onCreate();
success=databaseHelper.onInsert(iname.getText().toString(),qty.getText().toString(),t11.getText().toString());
Toast.makeText(getContext(),"Row id affected : "+success,Toast.LENGTH_SHORT).show();
}
以下是来自DatabaseHelper类的代码onInsert():
public long onInsert(String itemName,String qty,String price){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues contentvalue=new ContentValues();
contentvalue.put("NAME",itemName);
contentvalue.put("QTY",Integer.parseInt(qty));
contentvalue.put("PRICE",Integer.parseInt(price));
long result=db.insert(table,null,contentvalue);
return result;
}
CART FRAGMENT CODE:
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view=inflater.inflate(R.layout.fragment_mycart,container,false);
cartlistview=(ListView)view.findViewById(R.id.listView1);
db=new DatabaseHelper(this.getContext());
db.onCreate();
Cursor res=db.onView();
int len=res.getCount();
listCartItems = new ArrayList<CartItems>();
listCartItems.add(new CartItems(0,"Item Name", "Quantity", "Price","Delete"));
if(len==0)
{
Toast.makeText(this.getContext(),"Cart is Empty.",Toast.LENGTH_SHORT).show();
statusOfCart=false;
}
else {
while (res.moveToNext()) {
int id=res.getInt(0);
String itemname = res.getString(1).toString(); // 0 is id, 1 is name, 2 is qty, 3 price
String itemqty = Integer.toString(res.getInt(2));
String itemprice = Integer.toString(res.getInt(3)) ;
Toast.makeText(this.getContext(),itemname,Toast.LENGTH_SHORT).show();
listCartItems.add(new CartItems(id,itemname, itemqty, itemprice,"X"));
}
}
CartListAdapter cartListAdapter = new CartListAdapter(getContext(), R.layout.cartlist_layout, listCartItems);
cartlistview.setAdapter(cartListAdapter);
return view;
}
答案 0 :(得分:1)
当初始化视图寻呼机时,初始化3个片段,其中当前显示一个和相邻的两个片段。
首先初始化onCreateView(...)。
在第一个片段中修改后,除非更新发生,否则不会更新第三个片段。
所以在Fragment中有一个方法
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser){
//update fragment
//do you code}
}