Я новичок в программировании на андроид. Я реализую функциональность для сканирования определенного Item Item и поиска штрих-кода, если он уже существует в ArrayList. Если он существует, я заменяю текущий фрагмент сканирования фрагментом InvnetoryFound, в котором у меня есть опция для обновления количества и полного удаления элемента из ArrayList.Фрагмент, показывающий старые данные
Проблема, с которой я столкнулся, после удаления инвентаря при повторном сканировании для другого штрих-кода Inventory после успешного сканирования показывает InventoryFound Fragment со старыми данными, которые были удалены из ArrayList. Ниже мой код:
Test ArrayList Код:
public static String[] inve = new String[5];
public static ArrayList<String[]> inventory_list = new ArrayList<String[]>();
inve[0] = "INV45879";
inve[1] = "Bridge Support Pipe";
inve[2] = "Pre-insulated pipe supports provide both support and insulation in hot and cold piping applications.Pre-insulated pipe supports provide both support and insulation in hot and cold piping applications.";
inve[3] = "0885370720679";
inve[4] = "2";
inventory_list.add(inve);
inve = new String[5];
inve[0] = "INV45880";
inve[1] = "Cement";
inve[2] = "Pre-insulated pipe supports provide both support and insulation in hot and cold piping applications";
inve[3] = "9771234567003";
inve[4] = "8";
inventory_list.add(inve);
Если сканирование успешно вызывается ниже функции, чтобы заменить фрагмент:
private static void showFragment(Fragment fragment, String back_option) {
try {
// start transition
FragmentTransaction ft = activity.getFragmentManager().beginTransaction();
//if fragment Inventory is found then pass data to fragment
if(back_option.equals("inventoryFound")){
//sends found inventory list data to fragment
String[] inv_data = inventory_list.get(inventory_index);
Bundle bundle = new Bundle();
bundle.putStringArray("inventory_data",inv_data);
bundle.putInt("inventory_index",inventory_index);
inventoryFoundFragment.setArguments(bundle);
back_option = "null";
// replace fragment
if (!back_option.equals("null")) // with back option
ft.replace(R.id.frag_content, fragment).addToBackStack(back_option);
else // no back option
ft.replace(R.id.frag_content, fragment);
// commit
ft.commit();
}
catch(Exception e){
out("PROBLEM SHOWING FRAGMENT!!!"+e.getMessage());
}
}
фрагмент InventoryFound заполняющий данных и работает отлично. Ниже приведен код, когда я нажимаю на Remove заселенной Inventory:
public void removeInventory(){
Shared.inventory_list.remove(inventory_index);
Toast.makeText(mContext,"Inventory "+inventory_index+" Removed Successfully!", Toast.LENGTH_SHORT).show();
FragmentTransaction ft = getActivity().getFragmentManager().beginTransaction();
ft.remove(this);
ft.replace(R.id.frag_content, new ScanFragment());
ft.commit();
}
Он успешно удаление, но когда я проверить его еще раз, например, для штрих-кода «0885370720679» он показывает предыдущие данные об фрагменте InventoryFound. Я отлаживал его в Logcat (Log.d), и я могу видеть правильные данные, но он не отображается в фрагменте.
любые предложения или рекомендации будут оценены.