【问题标题】:How to finish an activity from an Adapter..?如何完成来自适配器的活动..?
【发布时间】:2011-10-31 09:37:34
【问题描述】:

我尝试将活动的context 传递给适配器,然后我尝试了context.finish(); 但它给了我一个错误,例如The method finish() is undefined for the type Context

【问题讨论】:

标签: android android-activity listadapter


【解决方案1】:

使用活动类型转换它。

((Activity)context).finish();

【讨论】:

  • 你不能总是假设上下文是Activity。也可以是ContextThemeWrapper。见stackoverflow.com/a/27434760/2413303
  • 谢谢。该活动从适配器类完成,因此我无法将任何数据发送到上一个活动。如何在我之前的活动中获取recyclerview活动已完成的事件。
  • 感谢您的帮助。关于“将数据发送到以前的活动”的问题,您可以使用“.putExtra”之类的变量。
【解决方案2】:

试试下面的代码:

public YourAdapterName(......,Context context){

...

this.myContext=context;
}

在你的适配器中 getView()

btn.setOnClickListener(new Button.OnClickListener() {

    @Override
    public void onClick(View v) {
        ((YourActivityName)myContext).yourDesiredMethod();

    }
});

【讨论】:

    【解决方案3】:

    尝试将您的 Activity 作为activity 参数传递,然后您就可以在其上调用finish()。希望这会有所帮助。

    【讨论】:

      【解决方案4】:

      此代码为((Activity)context).finish();,完整代码为

      holder.cardUsers.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
              Intent intent1=new Intent(mcontext,AstroChatPanel.class);
              intent1.putExtra("mobile",userslist.get(position).getMobile());
              intent1.putExtra("name",userslist.get(position).getName());
              intent1.putExtra("type","admin");
              mcontext.startActivity(intent1);
              ((Activity)mcontext).finish();
          }
      });
      

      【讨论】:

      【解决方案5】:

      对于 Kotlin 代码:

      (context as Activity).finish()
      

      【讨论】:

        【解决方案6】:

        在适配器中它会工作

        ((Activity)view.getContext()).finish();
        

        【讨论】:

          【解决方案7】:

          我还没有使用它,但我希望它会起作用。 采用: "this.recreate()" 如果你想从活动中重新加载它。

          如果您想从适配器重新加载它,请使用: "((Activity)context).recreate()"

          【讨论】:

            【解决方案8】:

            使用上下文输入您的活动名称并完成活动

            【讨论】:

              【解决方案9】:

              在您的自定义适配器中尝试调用完成使用下面的代码

              ((Activity)context).finish();
              

              【讨论】:

                【解决方案10】:

                在方法中关闭Activity自定义适配器

                 @Override
                  public void onClick(View v) {
                    MyApplication.value=mCompany.getCompanyId();
                    Intent intent = new Intent(MyApplication.context, VaasetActivity.class);
                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                   intent.putExtra("ID_COMPANY",mCompany.getCompanyId());
                    MyApplication.context.startActivity(intent);
                    ((Activity)context).finish();
                  }
                });
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-05-03
                  • 1970-01-01
                  • 2012-05-23
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多