Farhan patel
Farhan patel

Reputation: 41

using spinner in fragment error with ArrayAdapter is undefined

i am trying to initialize a dropdown list in a fragment. i am getting the following error.the constructor ArrayAdapter(FragTasbeeh, int, String[]) is undefined also can you explain me how to use activity class in a fragment,since only one class can be extended at a time.

{
    public class FragTasbeeh extends Fragment {

        ImageView ivIcon;
        TextView tvItemName;
        Button add;
        int counter = 0;


        public static final String IMAGE_RESOURCE_ID = "iconResourceID";
        public static final String ITEM_NAME = "itemName";


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

            View view = inflater.inflate(R.layout.tasbeeh, container, false);
            if (savedInstanceState == null) {
                counter = 0;
            } else {
                counter = savedInstanceState.getInt("counter", 0);
            }

            return view;

        }


        @
        Override
        public void onActivityCreated(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onActivityCreated(savedInstanceState);
            add = (Button) getActivity().findViewById(R.id.button1);
            tvItemName = (TextView) getActivity().findViewById(R.id.textView1);
            add.setOnClickListener(new View.OnClickListener() {

                @
                Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    counter++;
                    tvItemName.setText(counter + "");
                }
            });
        }

        private Spinner spinner;
        public static final String[] items = {
            "1", "2", "3"
        };

        @
        Override
        public void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            Spinner dropdown = (Spinner) getActivity().findViewById(R.id.spin);
            String[] items = new String[] {
                "1", "2", "three"
            };
            ArrayAdapter < String > adapter = new ArrayAdapter < String > (this, android.R.layout.simple_spinner_item, items);
            dropdown.setAdapter(adapter);
        }

    }
}

Upvotes: 0

Views: 835

Answers (3)

sjain
sjain

Reputation: 23344

Don't use this as the first parameter for ArrayAdapter.

Here this is your fragment FragTasbeeh.

So it means -

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

You need to use the following ArrayAdapter -

public ArrayAdapter (Context context, int resource, T[] objects)

Parameters

context The current context.

resource The resource ID for a layout file containing a TextView to use when instantiating views.

objects The objects to represent in the ListView.

Just change the line as -

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

OR

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

Upvotes: 1

Rajen Raiyarela
Rajen Raiyarela

Reputation: 5636

instead of pass this for

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

pass this.getActivity() as below

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

Upvotes: 1

PedroHawk
PedroHawk

Reputation: 630

Instead of

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

try

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

Upvotes: 1

Related Questions