【问题标题】:A Spinner inside a Fragment片段内的微调器
【发布时间】:2018-09-08 17:55:55
【问题描述】:

我正在创建一个简单的 android 游戏应用程序,但我在我的片段内的微调器中遇到了一些问题。我尝试了一些解决方案,但我的应用程序仍然崩溃。有人能帮我吗?万分感谢。

 public class SlotMachineFragmentOne extends Fragment {

 Spinner dropdown;

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

    View rootView = inflater.inflate(R.layout.activity_slotmachine_fragment_one, container, false);

    initspinnerfooter();
    dropdown = rootView.findViewById(R.id.spinner);

    return rootView;
}

private void initspinnerfooter() {
    String[] items = new String[]{
            "Choose apple", "Choose boy", " Choose cat", "Choose dog", 
    };

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, items);
    dropdown.setAdapter(adapter);
    dropdown.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            Log.v("item", (String) parent.getItemAtPosition(position));
            ((TextView) parent.getChildAt(0)).setTextColor(Color.WHITE);
        }

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

【问题讨论】:

    标签: android android-fragments spinner


    【解决方案1】:

    dropdown = rootView.findViewById(R.id.spinner);之后调用initspinnerfooter();

    像这样:

        @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    
        View rootView = inflater.inflate(R.layout.activity_slotmachine_fragment_one, container, false);
    
        dropdown = rootView.findViewById(R.id.spinner);
        initspinnerfooter();
    
        return rootView;
    }
    

    【讨论】:

      【解决方案2】:

      你在初始化之前访问dropdown对象,这就是它抛出NullPointerException的原因

      先初始化再使用

      公共类 SlotMachineFragmentOne 扩展片段 {

       Spinner dropdown;
      
       @Override
       public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
      
          View rootView = inflater.inflate(R.layout.activity_slotmachine_fragment_one, container, false);
      
      
          dropdown = rootView.findViewById(R.id.spinner);
          initspinnerfooter();
      
          return rootView;
      }
      
      private void initspinnerfooter() {
          String[] items = new String[]{
                  "Choose apple", "Choose boy", " Choose cat", "Choose dog", 
          };
      
          ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, items);
          dropdown.setAdapter(adapter);
          dropdown.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
              @Override
              public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                  Log.v("item", (String) parent.getItemAtPosition(position));
                  ((TextView) parent.getChildAt(0)).setTextColor(Color.WHITE);
              }
      
              @Override
              public void onNothingSelected(AdapterView<?> parent) {
                  // TODO Auto-generated method stub
              }
          });
      }   }
      

      【讨论】:

      • 感谢您解释我的问题的答案。 +1
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多