0

在我的應用程序中,我使用popupwindow充氣了自定義視圖。Android的充氣列表爲MultiAutoCompleteTextview(MultiAutocompleteTextview在彈出窗口內)

現在裏面有一個AutoCompleteTextview提供建議。

現在的問題是,只要我開始在AutoCompleteTextView中輸入文本,應用程序就會崩潰。

錯誤日誌: -

Unable to add window -- token [email protected] 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; 
    } 

我認爲錯誤是關於另一個充氣佈局頂部膨脹的佈局。

+0

將活動的上下文傳遞給適配器並使用相同的上下文對象。 – SripadRaj

+0

@SripadRaj使用mainactivity上下文嘗試 –

回答

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不要忘了與上下文作爲參數初始化構造函數。

+0

在適配器初始化中,我使用我的mainActivity上下文。但它顯示這個錯誤 –

+0

已經通過MainActivity.this內部的構造? –

+0

早些時候我使用了上面的代碼(正如你所提到的那樣),但是由於同樣的錯誤,我嘗試使用parent.getContext()作爲上下文。 –