-1

ラジオボタンを変更するとスピナーの視認性を変更したい。私がこのようにすると、両方のスピナーがView.GONEであり、ラジオボタンの1つをクリックしても何も起こりません。View.GONEではなく、View.VISIBLEのままです。私はIFをonViewCreatedに入れようとしましたが、結果は同じでした。私はどんな助けにも感謝します。ラジオボタンでスピナーの視認性を変更する

RadioButton rb1; 
RadioButton rb2; 
Spinner spinner2; 
Spinner spinner1; 
ArrayAdapter<CharSequence> adapter; 
ArrayAdapter<CharSequence> adapter2; 

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

     View view = inflater.inflate(R.layout.fragment_floating_button, container, false); 
     getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 

     rb1 = (RadioButton) view.findViewById(R.id.rb1); 
     rb2 = (RadioButton) view.findViewById(R.id.rb2); 

     spinner2 = (Spinner) view.findViewById(R.id.spinner2); 
     spinner1 = (Spinner) view.findViewById(R.id.spinner1); 

     if(rb1.isChecked()){ 
      spinner1.setVisibility(View.VISIBLE); 
      spinner1.setClickable(true); 
     } 
     else {spinner1.setVisibility(View.GONE); 
      spinner1.setClickable(false);} 
     if (rb2.isChecked()){ 
      spinner2.setVisibility(View.VISIBLE); 
      spinner2.setClickable(true); 
     } 
     else { 
      spinner2.setVisibility(View.GONE); 
      spinner2.setClickable(false); 
     } 
     return view; 
    } 



public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     adapter= ArrayAdapter.createFromResource(getActivity(),R.array.array2,android.R.layout.simple_spinner_item); 
     adapter2= ArrayAdapter.createFromResource(getActivity(),R.array.array1,android.R.layout.simple_spinner_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);   adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     spinner2.setAdapter(adapter); 
     spinner1.setAdapter(adapter2); 

     spinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){ 
               @Override 
               public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

                switch (position) { 
                 case 0: 
                  .... 

                 default: 

                  break; 
                } 
               } 

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

               } 
              } 
     ); 

     spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){ 
                @Override 
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

                 switch (position) { 
                  case 0: 
               .... 
                   break; 

                  default: 

                   break; 
                 } 
                } 

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

答えて

1

あなたはそのラジオボタンは、スピナーを変更するたびに更新され、RadioButtonのリスナー内の可視性を変更する必要があります。

rb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if(isChecked){ 
       spinner1.setVisibility(View.VISIBLE); 
       spinner1.setClickable(true); 
      } 
      else {spinner1.setVisibility(View.GONE); 
       spinner1.setClickable(false);} 
     } 
    }); 
+0

のようなあなたのコードを両方のラジオボタンのクリックリスナーに追加して貼り付ける必要があります

0

あなたの問題は、あなたのコードは、一度実行した後、ラジオ1は、それが何かをするだろうし、ラジオ2がチェックされている場合、それが何かをしてから停止しますチェックしている場合は停止することです。あなたは `Oncreateview`内のこのコードを試してみてください@Xbaiその

//click first radio button 

rb1.setonClickListener(new OnClickListener{ 
//your code 

    if(rb1.isChecked()){ 
     spinner1.setVisibility(View.VISIBLE); 
     spinner1.setClickable(true); 
    } 
    else {spinner1.setVisibility(View.GONE); 
     spinner1.setClickable(false);} 



}); 

//second click radio button 2 

    rb2.setonClickListener(new OnClickListener{ 

    //your code here 
    if (rb2.isChecked()){ 
     spinner2.setVisibility(View.VISIBLE); 
     spinner2.setClickable(true); 
    } 
    else { 
     spinner2.setVisibility(View.GONE); 
     spinner2.setClickable(false); 
    } 


    }); 
関連する問題