[英]How use intent start activity in holder
**我使用此代码在 mycontext 中单击它显示错误。 ** 如何正确使用意图活动而不会出错
public void onBindViewHolder(@NonNull final MyFotosAdapter.ImageViewHolder holder, final int position) {
firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
final Post post = mPosts.get(position);{
holder .image_profile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SharedPreferences.Editor editor = mContext.getSharedPreferences("PREFS", MODE_PRIVATE).edit();
editor.putString("profileid", post.getPublisher());
editor.apply();
// this code error runtime
Intent intent = new Intent(mContext,ProfileActivity.class);
intent.putExtra("profileid", post.getPublisher());
mContext.startActivity(intent);
/// end
}
});
Logcat :从 Activity 上下文之外调用 startActivity() 需要 FLAG_ACTIVITY_NEW_TASK 标志。 这真的是你想要的吗?
在您的活动中调用您的startActivity()
方法可能会更好,因为它比在您的适配器中调用它要好得多。
为此,您应该创建一个接口来在您的适配器和您的活动之间进行通信。
点击监听接口:
interface ClickListener {
void onClick(YourModel clickedModel,int position);
}
要使用onClick()
方法,只需将其作为构造函数参数传递到适配器中,如下所示:
private ClickListener listener;
public Adapter(ClickListener listener) {
this.listener = listener;
}
在您的 MainActivity 中实例化您的适配器,如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Adapter myAdapter = new Adapter(new ClickListener() {
@Override
public void onClick(YourModel clickedModel, int position) {
Intent intent = new Intent(MainActivity.this,ProfileActivity.class);
intent.putExtra("profileid", post.getPublisher());
MainActivity.this.startActivity(intent);
}
});
}
如果不需要,可以随意删除界面中onClick()
方法中的 arguments
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.