2016-11-27 3 views
0

Это моя доля в моем классе MainActivity. Я получаю ошибку на линии Uri.parse.Как обмениваться изображениями с Firebase в RecyclerView?

 viewHolder.mShareButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent shareIntent = new Intent(); 
       shareIntent.setAction(Intent.ACTION_SEND); 
       shareIntent.putExtra(Intent.EXTRA_TEXT, "Shared via Entrepreneur Quotebook"); 
       shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(getImageUri(Context ctx,))); 

       shareIntent.setType("image/*"); 
       startActivity(Intent.createChooser(shareIntent, "Share image via:")); 

Этот метод используется для анализа Uri. Я не уверен, что этот метод будет правильным, поскольку я скопировал это откуда-то.

public Uri getImageUri(Context ctx, Bitmap post_image) { 
    ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
    post_image.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
    String path = MediaStore.Images.Media.insertImage(ctx.getContentResolver(), post_image, "Title", null); 
    return Uri.parse(path); 
+0

Что такое сообщение об ошибке? – Wilik

+0

Не удается разрешить символ 'ctx'. –

+1

замените 'Context ctx' на' view.getContext() ' – Wilik

ответ

1

Итак, попробуйте следующее: -

public class RecycleClass extends RecyclerView.Adapter<RecycleClass.ViewHolder> { 
    Context c; 
    ArrayList<String> yourData = new ArrayList<>();//additional parameters 



    RecycleClass(Context c,ArrayList<String> yourData){ 
     this.c = c; //this is important 
     this.yourData = yourData; 
    } 

    /* 
     Rest of your code... 
    */ 
    } 

И от вашей основной деятельности (или деятельность, где вы настраиваете эту recyclerview)

//this will setup your context 
adapter = new RecycleClass(MainActivity.this,yourData); 

А также заменить этот

startActivity(Intent.createChooser(shareIntent, "Share image via:")); 

с

c.startActivity(Intent.createChooser(shareIntent, "Share image via:")); 

И наконец

public Uri getImageUri(Bitmap post_image) { 
ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
post_image.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
String path = MediaStore.Images.Media.insertImage(c.getContentResolver(), post_image, "Title", null); 
return Uri.parse(path); 
} 

Теперь, где бы вы вызова метода getImageUri() просто передать растровое изображение, а не контекст.

Попробуйте это и сообщите мне, если он работает или нет.

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