ArrayAdapter构造函数未定义

时间:2014-12-09 10:28:23

标签: android

以下代码给出了我的错误:构造函数ArrayAdapter(TrainingDetails,int,String [])未定义。如何纠正呢?请帮忙。在这里,我试图检索所选微调器的值并将其存储在另一个字符串中。

package com.example.fragments;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;
import com.example.R;
public class TrainingDetails extends BaseFragment
{
    View view;
    private EditText nameEdt;
    private Spinner trainingTypes;
    private Spinner trainerProfile;

    String data1[] = {"1", "2", "3"};
    String data2[] = {"a", "b", "c"};

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle      savedInstanceState)
    {
        view=inflater.inflate(R.layout.training_details, container,false);

        nameEdt = (EditText) view.findViewById(R.id.name_edt);

        trainingTypes = (Spinner) view.findViewById(R.id.trainingtypes_spn);

        ArrayAdapter<String> adapter_state = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data1);

    adapter_state.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    trainingTypes.setAdapter(adapter_state);

    trainingTypes.setOnItemSelectedListener(new OnItemSelectedListener()
    {
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3)
            {
                int index = arg0.getSelectedItemPosition();
                String selectedItem = data1[index];
            }
            @Override
            public void onNothingSelected(AdapterView<?> arg0)
            {

            }
        });

    trainerProfile = (Spinner) view.findViewById(R.id.trainerprofile_spn);

    return view;
}

}

3 个答案:

答案 0 :(得分:1)

变化

  ArrayAdapter<String> adapter_state = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data1);

  ArrayAdapter<String> adapter_state = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, data1);

在片段中,您可以使用getActivity()

获得上下文

答案 1 :(得分:1)

对于ArrayAdapter,您需要传递Context

更改此

ArrayAdapter<String> adapter_state = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data1);

ArrayAdapter<String> adapter_state = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, data1);

答案 2 :(得分:0)

ArrayAdapter的第一个参数是Context对象,而不是片段的实例。变化

new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data1);

new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, data1);