2013-11-21 42 views
0

你好,我現在正在使用片段,並且我似乎無法找到解決此問題的方法。到目前爲止:Android添加視圖到片段並將視圖綁定到適配器

FragmentReceivingStocksHeader.class

public class FragmentReceivingStocksHeader extends Fragment { 

EditText etVanTransferDocument, etDocumentNumber; 
Spinner spLocationFrom, spLocationTo; 
Button btExit, btProcess; 

ArrayAdapter<String> adapterFrom, adapterTo; 
String[] locationsFromArray, locationsToArray; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    initControls(); 

    View rootView = 
      inflater.inflate(R.layout.fragment_receivingstocks_transactionheader, container, false); 
    return rootView; 



} 

private void initControls() { 
    // TODO Auto-generated method stub 
    spLocationFrom = (Spinner) findViewById (R.id.spLocationFrom); 
    spLocationFrom.setEnabled(false); 
    spLocationTo = (Spinner) findViewById (R.id.spLocationTo); 
    spLocationTo.setEnabled(false); 

    locationsFromArray = getResources().getStringArray(R.array.locations); 
    locationsToArray = getResources().getStringArray(R.array.locationsto); 

    adapterFrom = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_dropdown_item, locationsFromArray); 
    adapterTo = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_dropdown_item, locationsToArray); 

    spLocationFrom.setAdapter(adapterFrom); 

    spLocationFrom.setSelection(1); 

    spLocationTo.setAdapter(adapterTo); 
    spLocationTo.setSelection(0); 
} 

但我在這一行錯誤:

spLocationFrom = (Spinner) findViewById (R.id.spLocationFrom); 

錯誤消息:

The method findViewById(int) is undefined for the type FragmentReceivingStocksHeader 

以及這些行:

adapterFrom = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_dropdown_item, locationsFromArray); 
    adapterTo = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_dropdown_item, locationsToArray); 

錯誤消息:

The constructor ArrayAdapter<String>(FragmentReceivingStocksHeader, int, String[]) is undefined 

什麼我這裏做錯了嗎?我需要你的幫助。謝謝。

回答

1

在你initControls方法,進行以下修改:

spLocationFrom = (Spinner) view.findViewById (R.id.spLocationFrom); 
spLocationTo = (Spinner) view.findViewById (R.id.spLocationTo); 

adapterFrom = new ArrayAdapter<String>(getActivity(), 
     android.R.layout.simple_spinner_dropdown_item, locationsFromArray); 
adapterTo = new ArrayAdapter<String>(getActivity(), 
     android.R.layout.simple_spinner_dropdown_item, locationsToArray); 

說明:findViewById不片段可用就像它在Activity中一樣,所以你需要使用View.findViewById方法。 而構造函數或ArrayAdapter接受一個上下文作爲第一個參數,所以活動工作,但不是片段。

+0

非常好的解釋!謝謝 – Dunkey

+0

不客氣!一切正常工作? – 2Dee

+0

是的,他們工作正常..我有另一個問題,如果我要按下按鈕或微調?我會在哪裏放置onClick方法? – Dunkey

1

問題是,片段類沒有類似findViewById的方法,就像Activity一樣。你需要使用你的充氣rootView.findViewById

至於您的適配器,類似地,構造函數不接受Fragment類型,但ContextActivity類延伸Context,您可以使用getActivity()方法從Fragment訪問您的活動。

看到你的代碼如下更新:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 


    View rootView = 
      inflater.inflate(R.layout.fragment_receivingstocks_transactionheader, container, false); 
    initControls(rootView); 
    return rootView; 



} 

private void initControls(View view) { 
    // TODO Auto-generated method stub 
    spLocationFrom = (Spinner) view.findViewById (R.id.spLocationFrom); 
    spLocationFrom.setEnabled(false); 
    spLocationTo = (Spinner) view.findViewById (R.id.spLocationTo); 
    spLocationTo.setEnabled(false); 

    locationsFromArray = getResources().getStringArray(R.array.locations); 
    locationsToArray = getResources().getStringArray(R.array.locationsto); 

    adapterFrom = new ArrayAdapter<String>(getActivity(), 
     android.R.layout.simple_spinner_dropdown_item, locationsFromArray); 
    adapterTo = new ArrayAdapter<String>(getActivity(), 
     android.R.layout.simple_spinner_dropdown_item, locationsToArray); 

    spLocationFrom.setAdapter(adapterFrom); 

    spLocationFrom.setSelection(1); 

    spLocationTo.setAdapter(adapterTo); 
    spLocationTo.setSelection(0); 
} 
+0

謝謝,但我的適配器呢? – Dunkey

相關問題