2013-11-21 38 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

相关问题