I have a problem that i couldn't resolve. When i store many data in the same bundle my navigation drawer (items matching the location of bundle) crash.
This is the example:
public void SelectItem(int possition) {
Fragment fragment = null;
Bundle args = new Bundle();
switch (possition) {
case 2:
fragment = new search();
//args.putString(FragmentThree.ITEM_NAME, dataList.get(possition).getItemName());
//args.putInt(FragmentThree.IMAGE_RESOURCE_ID, dataList.get(possition).getImgResID());
break;
case 3:
fragment = new com.tutecentral.navigationdrawer.Menu();
String DishText = ((Spinner) findViewById(R.id.spinnerSetting)). getSelectedItem().toString();
args.putString("DishType", DishText);
TextView text=(TextView)findViewById(R.id.price);
int priceDish=Integer.parseInt(text.getText().toString());
args.putInt("price", priceDish);
break;
case 4:
fragment = new bill_send();
TextView textprice=(TextView)findViewById(R.id.TotalFieldMenu);
int priceTotal=Integer.parseInt(textprice.getText().toString());
args.putInt("Total_price", priceTotal);
//args.putString(FragmentTwo.ITEM_NAME, dataList.get(possition).getItemName());
//args.putInt(FragmentTwo.IMAGE_RESOURCE_ID, dataList.get(possition).getImgResID());
break;
case 5:
fragment = new tables();
//args.putString(FragmentThree.ITEM_NAME, dataList.get(possition).getItemName());
//args.putInt(FragmentThree.IMAGE_RESOURCE_ID, dataList.get(possition).getImgResID());
break;
case 7:
fragment = new about();
//args.putString(FragmentTwo.ITEM_NAME, dataList.get(possition).getItemName());
//args.putInt(FragmentTwo.IMAGE_RESOURCE_ID, dataList.get(possition).getImgResID());
break;
case 8:
fragment = new setting();
//args.putString(FragmentThree.ITEM_NAME, dataList.get(possition).getItemName());
//args.putInt(FragmentThree.IMAGE_RESOURCE_ID, dataList.get(possition).getImgResID());
break;
case 9:
fragment = new FragmentOne();
//args.putString(FragmentOne.ITEM_NAME, dataList.get(possition).getItemName());
//args.putInt(FragmentOne.IMAGE_RESOURCE_ID, dataList.get(possition).getImgResID());
break;
case 10:
fragment = new FragmentTwo();
//args.putString(FragmentTwo.ITEM_NAME, dataList.get(possition).getItemName());
//args.putInt(FragmentTwo.IMAGE_RESOURCE_ID, dataList.get(possition).getImgResID());
break;
case 11:
fragment = new FragmentThree();
//args.putString(FragmentThree.ITEM_NAME, dataList.get(possition).getItemName());
//args.putInt(FragmentThree.IMAGE_RESOURCE_ID, dataList.get(possition).getImgResID());
break;
case 12:
fragment = new FragmentOne();
//args.putString(FragmentOne.ITEM_NAME, dataList.get(possition).getItemName());
//args.putInt(FragmentOne.IMAGE_RESOURCE_ID, dataList.get(possition).getImgResID());
break;
case 13:
fragment = new FragmentThree();
//args.putString(FragmentThree.ITEM_NAME, dataList.get(possition).getItemName());
//args.putInt(FragmentThree.IMAGE_RESOURCE_ID, dataList.get(possition).getImgResID());
break;
default:
break;
}
if(com.tutecentral.navigationdrawer.Menu.actionBar!=null){
if (com.tutecentral.navigationdrawer.Menu.actionBar.isShowing()){
com.tutecentral.navigationdrawer.Menu.actionBar.removeAllTabs();
}
}
fragment.setArguments(args);
FragmentManager frgManager = getFragmentManager();
frgManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
mDrawerList.setItemChecked(possition, true);
setTitle(dataList.get(possition).getItemName());
mDrawerLayout.closeDrawer(mDrawerList);
}
Notice that when i delete the bundle in case4 or 3 (use 1 of them) the app works.!!! and the error says that : Navigation Drawer on item click null pointer exception.
The two fragments where i recieve data are :
public class bill_send extends Fragment {
public bill_send(){
// TODO Auto-generated constructor stub
}
TextView textViewPrice;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view=inflater.inflate(R.layout.bill_send, container, false);
textViewPrice=(TextView) view.findViewById(R.id.produitPriceBill);
int priceTotal=getArguments().getInt("Total_price");
textViewPrice.setText(String.valueOf(priceTotal));
return view;
}
}
And the second (the Menu()):
final int PriceEdited = getArguments().getInt("price");
final String NameDish=getArguments().getString("DishType");
textViewPrice.setText(String.valueOf(PriceEdited));
price=Integer.parseInt(textViewPrice.getText().toString());
Can anyone help? Thank you.
Here is the Logcat :
04-11 18:24:39.102: D/dalvikvm(1069): GC_FOR_ALLOC freed 39K, 5% free 2889K/3016K, paused 53ms, total 56ms
04-11 18:24:39.322: I/dalvikvm-heap(1069): Grow heap (frag case) to 13.447MB for 11059216-byte allocation
04-11 18:24:39.382: D/dalvikvm(1069): GC_FOR_ALLOC freed 2K, 1% free 13686K/13820K, paused 55ms, total 55ms
04-11 18:24:40.992: D/gralloc_goldfish(1069): Emulator without GPU emulation detected.
04-11 18:24:49.632: I/Choreographer(1069): Skipped 873 frames! The application may be doing too much work on its main thread.
04-11 18:24:49.982: I/Choreographer(1069): Skipped 40 frames! The application may be doing too much work on its main thread.
04-11 18:25:12.822: I/Choreographer(1069): Skipped 32 frames! The application may be doing too much work on its main thread.
04-11 18:25:13.032: I/Choreographer(1069): Skipped 30 frames! The application may be doing too much work on its main thread.
04-11 18:25:13.242: I/Choreographer(1069): Skipped 39 frames! The application may be doing too much work on its main thread.
04-11 18:25:13.462: I/Choreographer(1069): Skipped 47 frames! The application may be doing too much work on its main thread.
04-11 18:25:15.622: D/AndroidRuntime(1069): Shutting down VM
04-11 18:25:15.622: W/dalvikvm(1069): threadid=1: thread exiting with uncaught exception (group=0xb3af2b90)
04-11 18:25:15.632: E/AndroidRuntime(1069): FATAL EXCEPTION: main
04-11 18:25:15.632: E/AndroidRuntime(1069): Process: com.tutecentral.navigationdrawer, PID: 1069
04-11 18:25:15.632: E/AndroidRuntime(1069): java.lang.NullPointerException
04-11 18:25:15.632: E/AndroidRuntime(1069): at com.tutecentral.navigationdrawer.MainActivity.SelectItem(MainActivity.java:130)
04-11 18:25:15.632: E/AndroidRuntime(1069): at com.tutecentral.navigationdrawer.MainActivity$DrawerItemClickListener.onItemClick(MainActivity.java:241)
04-11 18:25:15.632: E/AndroidRuntime(1069): at android.widget.AdapterView.performItemClick(AdapterView.java:299)
04-11 18:25:15.632: E/AndroidRuntime(1069): at android.widget.AbsListView.performItemClick(AbsListView.java:1113)
04-11 18:25:15.632: E/AndroidRuntime(1069): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2904)
04-11 18:25:15.632: E/AndroidRuntime(1069): at android.widget.AbsListView$3.run(AbsListView.java:3638)
04-11 18:25:15.632: E/AndroidRuntime(1069): at android.os.Handler.handleCallback(Handler.java:733)
04-11 18:25:15.632: E/AndroidRuntime(1069): at android.os.Handler.dispatchMessage(Handler.java:95)
04-11 18:25:15.632: E/AndroidRuntime(1069): at android.os.Looper.loop(Looper.java:137)
04-11 18:25:15.632: E/AndroidRuntime(1069): at android.app.ActivityThread.main(ActivityThread.java:4998)
04-11 18:25:15.632: E/AndroidRuntime(1069): at java.lang.reflect.Method.invokeNative(Native Method)
04-11 18:25:15.632: E/AndroidRuntime(1069): at java.lang.reflect.Method.invoke(Method.java:515)
04-11 18:25:15.632: E/AndroidRuntime(1069): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
04-11 18:25:15.632: E/AndroidRuntime(1069): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
04-11 18:25:15.632: E/AndroidRuntime(1069): at dalvik.system.NativeStart.main(Native Method)