0

私のアプリケーションでは、popupwindow を使用してカスタム ビューを拡張しました。

その中に、提案を提供する AutoCompleteTextview が 1 つあります。

問題は、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;
    }

エラーは、別の膨張したレイアウトの上にレイアウトを膨張させることだと思います。

4

1 に答える 1

0

あなたのアダプタークラスで:

コンテキストのパラメーターでコンストラクターを作成します。

例: (クラス名が 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 をパラメーターとしてコンストラクターを初期化することを忘れないでください。

于 2016-07-27T13:23:37.127 に答える