私は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:"));
}
});
}
}
は親切に私を導きます。どうすればこれを達成できますか?
このアダプターにはどのようなコンテキストが渡されていますか? – santalu
他のjavaファイルで@santaluどこアダプタを設定している、私はgetApplicationContextを渡しています –
それは問題です。あなたのアダプタに 'getApplicationContext()'を渡さないでください。あなたのアクティビティのコンテキストを渡すだけで、 'shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);する必要はありません。 – santalu