-1

我不能找到辦法通過上下文適配器在靜態片段微調(onCreateView()函數):的微調(在片段通過上下文)的Android適配器

public class MainActivity extends AppCompatActivity{ 
. 
. 
. 

    public static class MainFragment extends Fragment { 
    . 
    . 
    . 

     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     . 
     . 
     . 
     spinner1.setAdapter(new MyAdapter(MainActivity.this, spinner1, spinnerValues)); 
     spinner2.setAdapter(new MyAdapter(this, spinner1, spinnerValues)); 
     spinner3.setAdapter(new MyAdapter(this, spinner1, spinnerValues)); 
    . 
    . 
    . 

我甚至試圖創建支持static方法返回上下文的靜態類,但都沒有工作。

這是MyAdapter類:

public class MyAdapter extends ArrayAdapter<String> { 

    public MyAdapter(Context ctx, int txtViewResourceId, String[] objects) { 
     super(ctx, txtViewResourceId, objects); 
    } 

    public View getDropDownView(int position, View cnvtView, ViewGroup prnt) { 
     return getCustomView(position, cnvtView, prnt); 
    } 
    public View getView(int pos, View cnvtView, ViewGroup prnt) { 
     return getCustomView(pos, cnvtView, prnt); 
    } 
    public View getCustomView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = getLayoutInflater(); 
     View mySpinner = inflater.inflate(R.layout.custom_spinner, parent, false); 
     TextView main_text = (TextView) mySpinner 
       .findViewById(R.id.text_main_seen); 
     main_text.setText(spinnerValues[position]); 
     return mySpinner; 
    } 
} 

編輯:我收到一個錯誤:

+0

我不明白問題是什麼。它看起來像你的適配器在其構造函數中接受一個上下文,並且正好接收一個Activity上下文。 –

+0

嗯,我收到一個錯誤:「MainActivity.this無法從靜態上下文中引用」 – Fryzjer

+0

請編輯該問題,並將該詳細信息與正在使用它的完整類一起包含。 –

回答

1

您可以通過getActivity()yourParentView.getContext() 「MainActivity.this不能從靜態上下文中引用」。

語境 正如其名稱所暗示的,該應用程序的當前狀態的其上下文/目的。它可以讓新創建的對象瞭解到底發生了什麼。通常你調用它來獲取關於你的程序(活動,封裝/應用)

活動 活動是支持屏幕或UI中的Java代碼的另一部分信息。換句話說,用戶界面的構建塊就是活動。 Activity類是Android中的預定義類,每個擁有UI的應用程序都必須繼承它以創建窗口。活動表示Android應用程序的表示層,例如用戶看到的屏幕。 Android應用程序可以有多個活動,並且可以在應用程序運行時在它們之間切換。

注意:Activity擴展了Context。上下文不是活動。

+1

解釋爲什麼?'這將有利於這裏的社區 –

+0

@BasitAnwer我有更新我的答案,**如果您對答案滿意,請投票** –

+1

完成請始終嘗試解釋答案,以便其他用戶可以從該問題和答案中受益 –