Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android将视图添加到片段并将适配器绑定到视图_Android_Android Fragments - Fatal编程技术网

Android将视图添加到片段并将适配器绑定到视图

Android将视图添加到片段并将适配器绑定到视图,android,android-fragments,Android,Android Fragments,您好,我现在正在玩碎片游戏,我似乎找不到这个问题的解决方案 这就是我迄今为止所尝试的: FragmentReceivingStocksHeader.class public class FragmentReceivingStocksHeader extends Fragment { EditText etVanTransferDocument, etDocumentNumber; Spinner spLocationFrom, spLocationTo; Button btExit,

您好,我现在正在玩碎片游戏,我似乎找不到这个问题的解决方案

这就是我迄今为止所尝试的:

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); 
}
错误消息:

   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);
adapterFrom=新阵列适配器(此,
android.R.layout.simple\u微调器\u下拉菜单\u项目,位置栏);
adapterTo=新阵列适配器(此,
android.R.layout.simple\u微调器\u下拉菜单\u项目,位置数组);
错误消息:

   The constructor ArrayAdapter<String>(FragmentReceivingStocksHeader, int, String[]) is undefined
构造函数ArrayAdapter(FragmentReceivingStocksHeader,int,String[])未定义

我在这里做错了什么?我需要你们的帮助。谢谢。

问题是,片段类没有像Activity那样的方法findViewById。您需要使用您的
rootView.findViewById

对于适配器,类似地,构造函数不接受
Fragment
类型,而是接受
Context
<代码>活动类扩展了
上下文
,您可以使用
getActivity()
方法从
片段
访问您的活动

请参见下面更新的代码:

@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); 
}
@覆盖
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=
充气机。充气(R.layout.fragment\u receivingstocks\u transactionheader,container,false);
initControls(rootView);
返回rootView;
}
专用控件(视图){
//TODO自动生成的方法存根
spLocationFrom=(微调器)view.findViewById(R.id.spLocationFrom);
spLocationFrom.setEnabled(false);
spLocationTo=(微调器)view.findviewbyd(R.id.spLocationTo);
spLocationTo.setEnabled(false);
locationsFromArray=getResources().getStringArray(R.array.locations);
locationsToArray=getResources().getStringArray(R.array.locationsto);
adapterFrom=new ArrayAdapter(getActivity(),
android.R.layout.simple\u微调器\u下拉菜单\u项目,位置栏);
adapterTo=新阵列适配器(getActivity(),
android.R.layout.simple\u微调器\u下拉菜单\u项目,位置数组);
spLocationFrom.setAdapter(adapterFrom);
选举产生的位置(1);
spLocationTo.setAdapter(适配器To);
spLocationTo.setSelection(0);
}

在initControls方法中,进行以下修改:

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

adapterFrom=newarrayadapter(getActivity(),
android.R.layout.simple\u微调器\u下拉菜单\u项目,位置栏);
adapterTo=新阵列适配器(getActivity(),
android.R.layout.simple\u微调器\u下拉菜单\u项目,位置数组);
说明:findViewById在片段中不像在活动中一样可用,因此需要使用View.findViewById方法。
构造函数或ArrayAdapter将上下文作为第一个参数,因此“活动”可以工作,但“片段”不能工作。

是的,它们工作正常。。我还有一个问题,如果我按下按钮或旋转器怎么办?我将把onClick方法放在哪里?酷。至于你的另一个问题,你的“initControls”方法将是一个不错的选择。但是你需要记住,你不能指望你的活动在那一点上被完全创建,只有在onActivityCreated中,你才能安全地假设这一点。因此,如果您需要活动中的任何内容,我建议您保留对视图的引用,并在onActivityCreated中指定onClickListeners。这里有更多详细信息:您好,您可以做一些示例实现吗?您可以看看这个类:浏览开源github repos以获得实现示例,例如或
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);