2012-08-13 84 views
1

我正在使用AsyncTask類...我的目標是有一個列表,當搜索按鈕被點擊時,使搜索...列表中出現「搜索...」字符串爲此,我試圖instaniate一個適配器內onPreExecute ()爲什麼我無法實例化新變量?

private class SearchTask extends AsyncTask<Void, Void, Void>{ 

     protected void onPreExecute() { 
      String[] strings = new String[] { "Searching" }; 
      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, strings); 


      mSearchButton.setEnabled(false); 
     } 
       //rest of methods 
} 

編譯器給了我在new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, strings);

一個錯誤,它說:The constructor ArrayAdapter<String>(SearchActivity.SearchTask, int, ArrayList<String>) is undefined

什麼辦法解決呢?

回答

1

不正確的參數。看看documentation.

ArrayAdapter<String> adapter = new ArrayAdapter<String>(YourActivity.this,  
        android.R.layout.simple_list_item_1, strings); 
1

因爲SearchActivity.SearchTask不是Activity(或更一般的場景中Context)。您應該使用SearchActivity.this而不是簡單的this,它指的是AsyncTask類型的SearchActivity.SearchTask子類型的對象。

1

因爲你的參數是錯的 ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,strings);

(上下文,整型,對象[])

你輸入 '這個',而是 '這' 不是上下文。

如果在SearchTask中使用'this',則表示不是上下文。

讓你用,而不是「本」

1

我猜它是this問題「的getParent()」。

SearchActivity中添加成員變量:

private Context mContext = this; 

,然後改變:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, strings); 

ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext, android.R.layout.simple_list_item_1, strings); 
相關問題