2017-07-12 38 views
0

我面臨一個關於RecyclerView意圖的問題。 我只是想要在我的RecyclerView中的1個imageView。意圖在recyclerView適配器imageview

錯誤是:

android.util.AndroidRuntimeException:從外部 一個活動的上下文中調用startActivity()需要FLAG_ACTIVITY_NEW_TASK 標誌。這真的是你想要的嗎? 在android.app.ContextImpl.startActivity(ContextImpl.java:1383) 在android.app.ContextImpl.startActivity(ContextImpl.java:1370) 在 android.content.ContextWrapper.startActivity(ContextWrapper.java:323) 在android.view.View.performClick(View.java:4871) at android.view.View $ PerformClick.run(View.java:view.java:150) 20365) 在android.os.Handler.handleCallback(Handler.java:815) 在android.os.Handler.dispatchMessage(Handler.java:104) 在android.os.Looper.loop(LOOPE r.java:214) at android.app.ActivityThread.main(ActivityThread.java:6102) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method (ZygoteInit.java:823)07- 13 01:55:31.033 20699-29708/example.memories E/NativeCrypto: SSL = 0x5578a74560 cert_verify_callback x509_store_ctx = 0x7f9844d228 ARG =爲0x0一月7日至13日:55:31.033 20699-29708/example.memories E/NativeCrypto: ssl = 0x5578a74560 cert_verify_callback致電 verifyCertificateChain authMethod = ECDHE_RSA

和我RecyclerView適配器代碼:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { 

    private Context context; 
    private List<Upload> uploads; 
    Upload upload; 

    public MyAdapter(Context context, List<Upload> uploads) { 
     this.uploads = uploads; 
     this.context = context; 
    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View v = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.layout_images, parent, false); 
     ViewHolder viewHolder = new ViewHolder(v); 
     return viewHolder; 
    } 

    @Override 
    public void onBindViewHolder(ViewHolder holder, int position) { 
     upload = uploads.get(position); 

     holder.textViewName.setText(upload.getName()); 

     Glide.with(context).load(upload.getUrl()).into(holder.imageView); 
    } 

    @Override 
    public int getItemCount() { 
     return uploads.size(); 
    } 

    class ViewHolder extends RecyclerView.ViewHolder { 

     public TextView textViewName; 
     public ImageView imageView,shareImage; 


     public ViewHolder(View itemView) { 
      super(itemView); 

      textViewName = (TextView) itemView.findViewById(R.id.textViewName); 
      imageView = (ImageView) itemView.findViewById(R.id.imageView); 
      shareImage=(ImageView)itemView.findViewById(R.id.share); 

      shareImage.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Intent shareIntent = new Intent(); 
        shareIntent.setAction(Intent.ACTION_SEND); 
        shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(upload.getUrl())); 
        shareIntent.setType("image/*"); 
        context.startActivity(Intent.createChooser(shareIntent, "Share memories:")); 

       } 
      }); 
     } 

    } 

請指引我。我怎麼能做到這一點?

+0

你傳遞給這個適配器的上下文是什麼? – santalu

+0

@santalu在其他java文件中,我設置適配器,我通過getApplicationContext –

+0

這就是問題所在。不要將'getApplicationContext()'傳遞給你的適配器。只需傳遞你的活動的上下文,你甚至不需要'shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);'這樣做。 – santalu

回答

0

無論是傳遞一個活動方面,而不是應用程序上下文當你構建MyAdapter,或添加以下行調用context.startActivity前:

shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
+0

Activity Context解決了這個問題。不標誌:) –