MalformedURLException при использовании String [], извлеченного из SharedPreference в onCreate () - PullRequest
0 голосов
/ 23 августа 2011

Я сохраняю изображения в кэш, а затем извлекаю их.

Я сохраняю некоторые строки URL-адресов в SharedPreferences, а затем извлекаю их после выполнения действия Create ().

Проблемаэто когда я запускаю этот метод ..

public void getImagesfromCache(){
        ImageAdapter adapter = new ImageAdapter();

    String[] cachImages = myRemoteImages; //I set the CacheImages String[] here

    try {   
     URL aURL2 = null;
     aURL2 = new URL(cachImages[position]);  //I get a MalformedURLException here 
     URI imageCacheUri = null;


     try {
            imageCacheUri = aURL2.toURI();
        } catch (URISyntaxException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        if(new File(new File(this.getApplicationContext().getCacheDir(), "thumbnails"),"" + imageCacheUri.hashCode()).exists()){
            Log.v("FOUND", "Images found in cache! Now being loaded!");
            String cacheFile = this.getApplicationContext().getCacheDir() +"/thumbnails/"+ imageCacheUri.hashCode();
            ImageView i = new ImageView(this.getApplicationContext());
            FileInputStream fis = null;
            try {
                fis = new FileInputStream(cacheFile);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            Bitmap bm = BitmapFactory.decodeStream(fis);

             i.setImageBitmap(bm);
             putBitmapInDiskCache(imageCacheUri, bm);

             Log.v("Loader", "Image saved to cache");

             ((Gallery) findViewById(R.id.gallery))
              .setAdapter(new ImageAdapter(MainMenu.this));
        }

    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

Когда создается действие, я устанавливаю каждый URL на его переменную из общих настроек.

        SharedPreferences app_preferences = 
            this.getSharedPreferences("images_urls", MODE_WORLD_READABLE);
    imageUrl = app_preferences.getString("URL1", "Does not exist in preference");
    imageUrl2 = app_preferences.getString("URL2", "Does not exist in cache");
    imageUrl3 = app_preferences.getString("URL3", "Does not exist in preference");
    imageUrl4 = app_preferences.getString("URL4", "Does not exist in preference");

    Log.e("Preference", imageUrl + imageUrl2 + imageUrl3 + imageUrl4);

Как вы видите, я регистрирую его, чтобы сделатьконечно, что-то тянет.Он обнаруживается в отладке со всеми URL, которые я изначально сохранил.

Я вызываю getimagesfromCache () внутри oncreate, когда строки извлекаются из SharePreferences,

Так почему я получаюmalformedURLException в этой строке?

EDIT: вот код, который я использую для удаленных изображений ....

И позиция ..

 int position;

public String [] myRemoteImages = {imageUrl, imageUrl2, imageUrl3, imageUrl4};

у меня есть адаптер изображения ... Я устанавливаю положение с помощью этого внутри BaseAdapter

    public View getView(int position, View convertView, ViewGroup parent) {
                ImageView i = new ImageView(this.myContext);

                try {

            URL aURL = new URL(myRemoteImages[position]);

РЕДАКТИРОВАТЬ: Как я могуиспользовать позицию int внутри getView () из imageAdapter?или мне это нужно?

...