【问题标题】:Android inflate list for MultiAutoCompleteTextview (MultiAutocompleteTextview being inside popup window)MultiAutoCompleteTextview的Android膨胀列表(MultiAutocompleteTextview在弹出窗口内)
【发布时间】:2016-07-27 13:08:20
【问题描述】:

在我的应用程序中,我使用 popupwindow 扩展了我的自定义视图。

现在里面有一个 AutoCompleteTextview 可以提供建议。

现在的问题是,每当我开始在 AutoCompleteTextView 中输入文本时,应用程序就会崩溃。

错误日志:-

Unable to add window -- token android.view.ViewRootImpl$W@1c6ea57 is not valid; is your activity running?

问题来了:-

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder vh;
        View view = convertView;
        if (view == null) {
            if (inflater == null)
                inflater = LayoutInflater.from(parent.getContext());    // ISSUE
            view = inflater.inflate(R.layout.chips_adapter,parent, false);   // ISSUE
            vh = new ViewHolder();
            vh.tv = (TextView) view.findViewById(R.id.textView1);

            view.setTag(vh);
        } else {
            vh = (ViewHolder) view.getTag();
        }

        vh.tv.setText(suggestions.get(position).getTitle());

        return view;
    }

我认为错误是关于在另一个膨胀布局之上膨胀一个布局。

【问题讨论】:

  • 将活动的上下文传递给适配器并使用相同的上下文对象。
  • @SripadRaj 尝试使用 mainactivity 上下文

标签: android dialog popupwindow layout-inflater multiautocompletetextview


【解决方案1】:

在您的适配器类中:

使用上下文参数创建构造函数。

示例:(考虑类名是 AdapterClass)

Class AdapterClass {
   LayoutInflater inflater;
   private Context context;

   public AdapterClass(Context context){
        this.context = context;
        inflater = LayoutInflater.from(this.context);
   }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder vh;
        View view = convertView;
        if (inflater == null){
            view = inflater.inflate(R.layout.chips_adapter,parent, false);
            vh = new ViewHolder();
            vh.tv = (TextView) view.findViewById(R.id.textView1);
            view.setTag(vh);
        } else {
            vh = (ViewHolder) view.getTag();
        }

        vh.tv.setText(suggestions.get(position).getTitle());

        return view;
    }
}

注意:- 当你调用 AdapterClass 时不要忘记初始化构造函数,以 Context 作为参数。

【讨论】:

  • 在适配器初始化中,我正在使用我的 mainActivity 上下文。但它显示此错误
  • 在构造函数中传递了 MainActivity.this 吗?
  • 之前我使用了上面的代码(正如你所提到的),但由于同样的错误,我尝试使用 parent.getContext() 作为上下文。
  • 如果你分享你的 mainactivity 代码会很有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多