【问题标题】:Selecting Spinner Item doesen't trigger onItemSelected - method选定的微调器项目不会触发 onItemSelected - 方法
【发布时间】:2017-04-28 14:54:47
【问题描述】:

我有一个设置片段,里面有 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) {

    }

}

【问题讨论】:

    标签: java android fragment spinner onitemselectedlistener


    【解决方案1】:

    更改您的 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");    
         }
    
    }
    

    【讨论】:

    • 不得不等待几分钟过去。标记它。 :)
    【解决方案2】:

    onCreateView中的退货声明更改为

    return view;
    

    您当前的退货声明正在夸大一个全新的观点

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-06
      • 1970-01-01
      • 1970-01-01
      • 2022-07-16
      • 2012-11-25
      • 1970-01-01
      • 2022-11-14
      相关资源
      最近更新 更多