tamim abweini
tamim abweini

Reputation: 431

cannot resolve constructor for spinner adapter in fragment

I have a tabbed activity "ActivityBeamRec" that has two fragments, in the second fragment error occur when i try to add spinner, here is the fragment code

public  class FragBeamRec extends Fragment  {

        public static FragBeamRec newInstance() {
        FragBeamRec fragment = new FragBeamRec();
        return fragment;
             }

        public FragBeamRec() {
    }
    static  EditText tasss = null;
    static EditText tass1 = null;
    static  Spinner spinAs = null;
    static Spinner spinAs1 = null;

    static  ArrayAdapter<String> adapter;

    @Override
    public View onCreateView(  LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
       final   View v = inflater.inflate(R.layout.fragment_frag_beam_rec, container, false);
        ArrayList<String> list = new ArrayList<>();
        list.add(0,"");
        list.add(1,"");
        list.add(2,"");
        spinAs  = (Spinner)v.findViewById(R.id.spinner);
        spinAs1 = (Spinner)v.findViewById(R.id.spinner2);
        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);
            spinAs.setAdapter(adapter);

            return v;
    }

}

I tried to use ActivityBeamRec.this insted of this but I ended with an error "ActivityBeamRec is not an enclosing class".

Upvotes: 0

Views: 828

Answers (3)

Raghunandan
Raghunandan

Reputation: 133560

Change this

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

to

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

The param needs to be a context. Use getActivity(). http://developer.android.com/reference/android/app/Fragment.html#getActivity%28%29

To the comment

 spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {


        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });

Upvotes: 3

Ajay Pandya
Ajay Pandya

Reputation: 2457

This will help you

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

Upvotes: 0

user6011162
user6011162

Reputation:

Change this line

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

to this

adapter = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_item, list);

Upvotes: 0

Related Questions