选择Spinner Item不要触发onItemSelected - 方法

时间:2017-04-28 14:54:48

标签: java android fragment spinner onitemselectedlistener

我有一个包含2个微调器的设置片段。我无法执行写入onItemSelected方法的代码。没有错误或例外。

我搜索了许多类似的问题,但没有一个解决方案适合我。我不知道下一步该尝试什么。

public class SettingsFragment extends Fragment implements AdapterView.OnItemSelectedListener {

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

        //Getting the instance of Spinner and applying OnItemSelectedListener on it
        View view = inflater.inflate(R.layout.fragment_settings, container, false);

        Spinner spinnerBetrag = (Spinner) view.findViewById(R.id.spinnerBetrag);
        Spinner spinnerDetails = (Spinner) view.findViewById(R.id.spinnerDetails);

        spinnerBetrag.setOnItemSelectedListener(this);
        spinnerDetails.setOnItemSelectedListener(this);

        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_settings, container, false);
    }


    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
          //>>Problem: Code within this method is never beeing executed<<
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }

}

2 个答案:

答案 0 :(得分:0)

onCreateView中的退货声明更改为

return view;

您当前的退货声明正在膨胀一个全新的视图

答案 1 :(得分:0)

更改onCreateView()方法以返回view

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

    //Getting the instance of Spinner and applying OnItemSelectedListener on it
    View view = inflater.inflate(R.layout.fragment_settings, container, false);

    Spinner spinnerBetrag = (Spinner) view.findViewById(R.id.spinnerBetrag);
    Spinner spinnerDetails = (Spinner) view.findViewById(R.id.spinnerDetails);

    spinnerBetrag.setOnItemSelectedListener(this);
    spinnerDetails.setOnItemSelectedListener(this);

    return view;  // add this instead
}

同样适用于onItemSelected()添加

 public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

     Spinner spinner = (Spinner) parent;
     if(spinner.getId() == R.id.spinnerBetrag)
     {
       Log.d("Spinner 1","selected");                 
     }
     else if(spinner.getId() == R.id.spinnerDetails)
     {
        Log.d("Spinner 2","selected");    
     }

}