繁体   English   中英

如何在持有人中使用意图启动活动

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM