Reputation: 41
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
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
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
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