如何获得Fragment中微调器更改的值?

时间:2014-09-05 16:45:45

标签: android android-fragments android-spinner

为什么没有片段支持微调器呢?我有以下片段类并添加了微调器。

public class SettingFragment extends Fragment {
Spinner spinner1;
public List<String> genderitems, titleitems;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    View rootview = inflater.inflate(R.layout.settinglayout, container,
            false);
    spinner1 = (Spinner) rootview.findViewById(R.id.usertitle);

    titleitems = new ArrayList<String>();

    setTitleSpinnerContent(rootview);

    titleitems.add("Beginner");
    titleitems.add("Novice");

    return rootview;

}

private void setTitleSpinnerContent(View view) {

    ArrayAdapter<String> adp = new ArrayAdapter<String>(getActivity(),
            android.R.layout.simple_dropdown_item_1line, titleitems);
    adp.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner1.setAdapter(adp);
}}

如何在选择时获取微调器更改值并在微调器上添加textview。 我在这里失踪的是什么?提前谢谢。

我甚至尝试添加onitemselectedlistener(),但结果也是nil。

2 个答案:

答案 0 :(得分:4)

activityfragment中添加微调器没有区别。如果你想让微调项目改变listener这样的实现..

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int pos,
        long id) { 

    Toast.makeText(parent.getContext(),  
            "On Item Select : \n" + parent.getItemAtPosition(pos).toString(), 
            Toast.LENGTH_LONG).show(); 
        } 

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

    } 
}    

答案 1 :(得分:0)

我对你的具体问题有点困惑,但是如果问题是你没有看到你的微调器填充了'Beginner'和'Novice'的值,那么看起来你已经设置了你的适配器空列表,然后在设置适配器后将项添加到列表中。但您从未在适配器上调用notifyDataSetChanged(),因此它不知道您的新值。在设置适配器之前,您是否尝试过将项目添加到列表中的简单解决方案?

    titleitems.add("Beginner");
    titleitems.add("Novice");
    setTitleSpinnerContent(rootview);