2014-08-29 6 views
0

Я получаю следующее сообщение об ошибке «Несоответствие типа: не может конвертировать из строки в Uri» со следующей строки были определеныНесоответствие типа: не может конвертировать из строки в Uri

list_item_bac = i.getStringExtra("list_item_bac"); 

list_item_bac имеет Uri, поскольку она заполнит изображение через данные JSON, поэтому я не хочу изменять его из Uri в String, так как я не возвращаю текст, а изображение, которое я бы передал в изображение.

Ниже весь код:

public class CasualEventsSingleItemActivity extends Activity { 

    // Declare Variables 
    String list_item_name; 
    String list_item_description; 
    Uri list_item_bac; 

    String list_item_price; 
    String list_item_location; 

    String single_list_item_description; 




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


     ImageLoader mImageLoader = new ImageLoader(Volley.newRequestQueue(this), 
       new ImageLoader.ImageCache() { 
      private final LruCache<String, Bitmap> 
        cache = new LruCache<String, Bitmap>(20); 

      @Override 
      public Bitmap getBitmap(String url) { 
       return cache.get(url); 
      } 

      @Override 
      public void putBitmap(String url, Bitmap bitmap) { 
       cache.put(url, bitmap); 
      } 
     }); 


     Intent i = getIntent(); 
     list_item_name = i.getStringExtra("list_item_name"); 
     list_item_location = i.getStringExtra("list_item_location"); 
     list_item_bac = i.getStringExtra("list_item_bac"); 



     single_list_item_description = i.getStringExtra("single_list_item_description"); 

     TextView txtname = (TextView) findViewById(R.id.name); 
     TextView txtlocation = (TextView) findViewById(R.id.location); 
     TextView txtsdescription = (TextView) findViewById(R.id.sdescription); 


     NetworkImageView hsvimage1 = (NetworkImageView) findViewById(R.id.hsvimage1); 
     NetworkImageView hsvimage2 = (NetworkImageView) findViewById(R.id.hsvimage2); 
     NetworkImageView hsvimage3 = (NetworkImageView) findViewById(R.id.hsvimage3); 

     // Get image URLs from your previous network request... 
     // I could not determine where this is stored from code in your question. 
     Uri url1 = list_item_bac; // e.g. http://example.com/images/image1.png 
     Uri url2 = list_item_bac; 
     Uri url3 = list_item_bac; 

     // Set the URL of the image that should be loaded into this view, and 
     // specify the ImageLoader that will be used to make the request. 
     hsvimage1.setImageUrl(url1, mImageLoader); 
     hsvimage2.setImageUrl(url2, mImageLoader); 
     hsvimage3.setImageUrl(url3, mImageLoader); 

     // Set results to the TextViews 
     txtname.setText(list_item_name); 
     txtlocation.setText(list_item_location); 
     txtsdescription.setText(single_list_item_description); 


     Button mConfirm2 = (Button)findViewById(R.id.bConfirm2); 
     mConfirm2.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       ParseUser currentUser = ParseUser.getCurrentUser(); 

       // Create the class and the columns 
       currentUser.saveInBackground(); 

       currentUser.put("ActivityName", list_item_name); 
       currentUser.saveInBackground(new SaveCallback() { 
        @Override 
        public void done(ParseException e) { 
         setProgressBarIndeterminateVisibility(false); 

         if (e == null) { 
          // Success! 
          Intent intent = new Intent(CasualEventsSingleItemActivity.this, usermatch.class); 
          intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
          intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
          startActivity(intent); 
         } 
         else { 
          AlertDialog.Builder builder = new AlertDialog.Builder(CasualEventsSingleItemActivity.this); 
          builder.setMessage(e.getMessage()) 
           .setTitle(R.string.signup_error_title) 
           .setPositiveButton(android.R.string.ok, null); 
          AlertDialog dialog = builder.create(); 
          dialog.show(); 
         } 
        } 
       }); 
       //CasualEventsSingleItemActivity.this.startActivity(new Intent(CasualEventsSingleItemActivity.this, MatchingActivity.class)); 
      } 
     }); 


    } 
} 

Любая помощь будет принята с благодарностью. Спасибо заранее.

Update

08-29 13:15:32.355: E/AndroidRuntime(1247): FATAL EXCEPTION: main 
08-29 13:15:32.355: E/AndroidRuntime(1247): Process: com.dooba.beta, PID: 1247 
08-29 13:15:32.355: E/AndroidRuntime(1247): java.lang.NullPointerException 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at com.android.volley.Request.<init>(Request.java:130) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at com.android.volley.toolbox.ImageRequest.<init>(ImageRequest.java:71) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at com.android.volley.toolbox.ImageLoader.get(ImageLoader.java:220) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at com.android.volley.toolbox.ImageLoader.get(ImageLoader.java:171) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at com.android.volley.toolbox.NetworkImageView.loadImageIfNecessary(NetworkImageView.java:140) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at com.android.volley.toolbox.NetworkImageView.onLayout(NetworkImageView.java:180) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.view.View.layout(View.java:14817) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1660) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.widget.LinearLayout.onLayout(LinearLayout.java:1436) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.view.View.layout(View.java:14817) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.view.ViewGroup.layout(ViewGroup.java:4631) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.widget.HorizontalScrollView.onLayout(HorizontalScrollView.java:1474) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.view.View.layout(View.java:14817) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.view.ViewGroup.layout(ViewGroup.java:4631) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1055) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.view.View.layout(View.java:14817) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.view.ViewGroup.layout(ViewGroup.java:4631) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.widget.FrameLayout.onLayout(FrameLayout.java:388) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.view.View.layout(View.java:14817) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.view.ViewGroup.layout(ViewGroup.java:4631) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at com.android.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:374) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.view.View.layout(View.java:14817) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.view.ViewGroup.layout(ViewGroup.java:4631) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.widget.FrameLayout.onLayout(FrameLayout.java:388) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.view.View.layout(View.java:14817) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.view.ViewGroup.layout(ViewGroup.java:4631) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1987) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1744) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.view.Choreographer.doCallbacks(Choreographer.java:574) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.view.Choreographer.doFrame(Choreographer.java:544) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.os.Handler.handleCallback(Handler.java:733) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.os.Handler.dispatchMessage(Handler.java:95) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.os.Looper.loop(Looper.java:136) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at android.app.ActivityThread.main(ActivityThread.java:5017) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at java.lang.reflect.Method.invoke(Method.java:515) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
08-29 13:15:32.355: E/AndroidRuntime(1247):  at dalvik.system.NativeStart.main(Native Method) 

ответ

1

Вы извлекаете строку и пытается установить его в URI. Вы должны разобрать его. Попробуйте следующее:

list_item_bac = Uri.parse(i.getStringExtra("list_item_bac")); 
+0

Благодарим вас за быстрый ответ. Теперь это имеет больше смысла. При применении этого изменения я получил следующую ошибку в деятельности в eclipse: «Метод setImageUrl (String, ImageLoader) в типе NetworkImageView не применим для аргументов (Uri, ImageLoader)» на строке hsvimage1.setImageUrl (url1 , mImageLoader); , если бы вы могли любезно предоставить другое предложение, это было бы очень полезно. – John

+1

В этом случае вам нужна строка, а не URI. Поскольку метод setInageUrl принимает строку, вам нужно будет преобразовать URI в строку, прежде чем передать ее в – user1282637

+0

Спасибо за ваш ответ. При этом я столкнулся с ошибкой исключения nullpointer. Я любезно добавил сообщение log cat в разделе обновления моего первоначального сообщения. – John

Смежные вопросы