【问题标题】:Activity not finishing after calling finish from listadapter从 listadapter 调用完成后活动未完成
【发布时间】:2014-01-25 07:53:05
【问题描述】:

从 listview 的 listitems 视图之一调用 finish() 后,Activity 仍会显示。 我使用 viewpager 指示器来托管片段列表。使用列表视图中的活动对象调用 finish() 方法。

 public View getView(int position , View changeview, ViewGroup container)
 {
    View row_view=changeview;

    if(row_view==null)
    {
     row_view=layoutInflater.inflate(R.layout.rate_cards_list_item,null);   
     viewHolder.rechargeIconListener=new RechargeIconListener()
     viewHolder.topup_recharge_icon.setOnClickListener(viewHolder.rechargeIconListener);
     row_view.setTag(viewHolder);
    }


}

列表适配器内部的内部类

    class RechargeIconListener implements View.OnClickListener
    {
    @Override
    public void onClick(View view) {
            activity_object.setResult(Activity.RESULT_OK,intent);
            activity_object.finish();
            Log.w("activity_object","Activity not finished");
            return;
    }
   }

activity_object 是与列表适配器的构造函数一起传递的活动对象。 此外,活动有时会结束,有时不会。

【问题讨论】:

  • 即使活动没有完成,Log.w() 是否也会出现?

标签: android android-layout android-listview android-fragments


【解决方案1】:

如下所述使用 LocalBroadcastManager。

how to use LocalBroadcastManager?

您可以在活动中注册接收器,并通过列表项单击为接收器广播一个意图。 在 onReceive 方法中设置结果并完成您的活动。

【讨论】:

    【解决方案2】:

    获取活动的上下文并调用finish()

    class RechargeIconListener implements View.OnClickListener
        {
        @Override
        public void onClick(View view) {
                context.finish();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-26
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多