سؤال

im using a viewpager to create a custom galley with images that i save in a sqlite database with a path like this: @drawable.foto1.

I can obtain this data correctly,but my app crash and show a NumberFormatException from the integer that i use for save the path of the image.My code is:

public class Tab3Up extends Activity {

    private  String mString[];
    private Integer ArrayFotos[];
    private Context context;
    private HipotecaDbAdapter dbAdapter;
        private Cursor cursor;
        private long id ;

     @Override
     public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.pageslide);


      Intent intent = getIntent();
      Bundle extra = intent.getExtras();

         if (extra == null) return;

            dbAdapter = new HipotecaDbAdapter(this);
            dbAdapter.abrir();
            id = extra.getLong(HipotecaDbAdapter.C_COLUMNA_ID);
            cursor = dbAdapter.getRegistro(id);

            Log.i("IDENTIFICADOR BD ","EL ID ES: "+id);

            ArrayList<String> array = new ArrayList<String>(); 
            array.add(cursor.getString(cursor.getColumnIndex(HipotecaDbAdapter.C_COLUMNA_FOTO1)));

            mString = (String[]) array.toArray(new String[array.size()]);
            Log.d("tag", "Trying to get count on line 50 class Test");
             ArrayFotos=new Integer[mString.length];

            for(int i=0;i<mString.length;i++){

                ArrayFotos[i]=Integer.parseInt(mString[i]);
            }

            ViewPagerAdapter adapter = new ViewPagerAdapter(Tab3Up.this,ArrayFotos);
          ViewPager myPager = (ViewPager) findViewById(R.id.pager);
          myPager.setAdapter(adapter);
          myPager.setCurrentItem(0);
     }


    // private Integer imgArra[] = { R.drawable.foto1, R.drawable.foto2,
        //   R.drawable.foto3, R.drawable.foto4, };



        //fotos[0] = (Integer[])array.toArray(new Integer[array.size()]);

     public class ViewPagerAdapter extends PagerAdapter {

         Activity activity;
         Integer imageArray[];

         public ViewPagerAdapter(Activity act,Integer ArrayFotos[]) {
         imageArray = ArrayFotos;
          activity = act;
         }

         public int getCount() {
             Log.d("tag", "Trying to get count on line 50 class Test");
          return imageArray.length;
         }

         public Object instantiateItem(View collection, int position) {
           ImageView view = new ImageView(activity);
           view.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
           view.setScaleType(ScaleType.FIT_XY);
           view.setBackgroundResource(imageArray[position]);
           ((ViewPager) collection).addView(view, 0);
          return view;
         }

         @Override
         public void destroyItem(View arg0, int arg1, Object arg2) {
            ((ViewPager) arg0).removeView((View) arg2);
         }

         @Override
         public boolean isViewFromObject(View arg0, Object arg1) {
          return arg0 == ((View) arg1);
         }

         @Override
         public Parcelable saveState() {
          return null;
         }
        }

}

And the main error from my log:

02-20 09:52:58.439: E/AndroidRuntime(17861): FATAL EXCEPTION: main
02-20 09:52:58.439: E/AndroidRuntime(17861): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.bdoffline/com.example.bdoffline.Tab3Up}: java.lang.NumberFormatException: Invalid int: "@drawable/foto1"
02-20 09:52:58.439: E/AndroidRuntime(17861):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2077)
02-20 09:52:58.439: E/AndroidRuntime(17861):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104)
02-20 09:52:58.439: E/AndroidRuntime(17861):    at android.app.ActivityThread.access$600(ActivityThread.java:134)
02-20 09:52:58.439: E/AndroidRuntime(17861):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
02-20 09:52:58.439: E/AndroidRuntime(17861):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-20 09:52:58.439: E/AndroidRuntime(17861):    at android.os.Looper.loop(Looper.java:154)
02-20 09:52:58.439: E/AndroidRuntime(17861):    at android.app.ActivityThread.main(ActivityThread.java:4624)
02-20 09:52:58.439: E/AndroidRuntime(17861):    at java.lang.reflect.Method.invokeNative(Native Method)
02-20 09:52:58.439: E/AndroidRuntime(17861):    at java.lang.reflect.Method.invoke(Method.java:511)
02-20 09:52:58.439: E/AndroidRuntime(17861):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
02-20 09:52:58.439: E/AndroidRuntime(17861):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
02-20 09:52:58.439: E/AndroidRuntime(17861):    at dalvik.system.NativeStart.main(Native Method)
02-20 09:52:58.439: E/AndroidRuntime(17861): Caused by: java.lang.NumberFormatException: Invalid int: "@drawable/foto1"
02-20 09:52:58.439: E/AndroidRuntime(17861):    at java.lang.Integer.invalidInt(Integer.java:138)
02-20 09:52:58.439: E/AndroidRuntime(17861):    at java.lang.Integer.parse(Integer.java:375)
02-20 09:52:58.439: E/AndroidRuntime(17861):    at java.lang.Integer.parseInt(Integer.java:366)
02-20 09:52:58.439: E/AndroidRuntime(17861):    at java.lang.Integer.parseInt(Integer.java:332)
02-20 09:52:58.439: E/AndroidRuntime(17861):    at com.example.bdoffline.Tab3Up.onCreate(Tab3Up.java:58)
02-20 09:52:58.439: E/AndroidRuntime(17861):    at android.app.Activity.performCreate(Activity.java:4479)
02-20 09:52:58.439: E/AndroidRuntime(17861):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050)
02-20 09:52:58.439: E/AndroidRuntime(17861):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2041)
02-20 09:52:58.439: E/AndroidRuntime(17861):    ... 11 more

Hope this help!!And Thanks!

هل كانت مفيدة؟

المحلول

You should not store the string "@drawable/foto1" into your database. Instead store the value of R.drawable.foto1 which is an integer and you can apply it to setBackgroundResource() directly.

نصائح أخرى

You try to convert the string "@drawable/foto1" to an integer and sure enough it fails because it does not represent an integer.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top