2017-07-12 5 views
0

私はRecyclerViewの意図に関する問題に直面しています。 RecyclerViewにある1つのimageViewにインテントを入れたいだけです。リサイクルビューアのイメージビューの意図ビューア

エラーがある:

android.util.AndroidRuntimeException:startActivity()を呼び出すアクティビティコンテキストの 外部からはFLAG_ACTIVITY_NEW_TASK フラグを必要とします。これは本当にあなたが望むものですか? android.content.ContextWrapper.startActivity(ContextWrapper.java:323)でandroid.app.ContextImpl.startActivityでandroid.app.ContextImpl.startActivity(ContextImpl.java:1383) (ContextImpl.java:1370) で (View.java:4871) (android.view.View)$ performClick.run(View.java: (Handler.java:815) (Handler.java:815) (android.os.Handler.dispatchMessage(Handler.java:104)) at android.os.Looper.loop(Loope (Nativeメソッド) at java.lang.reflect.Method.invoke(Method())。 .java:372) at com.android.internal.os.Zava:823)07.-japan.internal.os.ZygoteInit.main(ZygoteInit.java:823) 13 01:55:31.033 20699から29708/example.memories E/NativeCrypto: SSL = 0x5578a74560 cert_verify_callback x509_store_ctx = 0x7f9844d228 引数= 0x0の7月13日01: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

他のjavaファイルで@santaluどこアダプタを設定している、私はgetApplicationContextを渡しています –

+0

それは問題です。あなたのアダプタに 'getApplicationContext()'を渡さないでください。あなたのアクティビティのコンテキストを渡すだけで、 'shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);する必要はありません。 – santalu

答えて

0

ことはあなたのアダプターにgetApplicationContext()を渡さないでください。ちょうどあなたの活動の文脈を渡し、あなたはshareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);する必要はありません。

アプリケーションコンテキストを使用するときは注意してください。 本当にお読みになることをお勧めしますDifference between getContext() , getApplicationContext() , getBaseContext() and "this"

0

あなたがMyAdapterを構築する際に代わりにアプリケーションコンテキストのActivityコンテキストを渡す、またはあなたがcontext.startActivityを呼び出す前に、次の行を追加してください:

shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
+0

アクティビティコンテキストがこの問題を解決します。フラグではありません:) –