2017-02-16 15 views
0

Я пытаюсь добавить 2 прядильника в фрагмент. Эти прядильщики взаимосвязаны. Когда пользователь выбирает значение, второй счетчик будет заполнен значением. Пример: 1-й счетчик имеет 2 значения как «Автомобиль» & «Автобус». Когда пользователь выбирает «автомобиль», 2-й счетчик будет заполнен цветом автомобиля «Красный», «Синий». Если вы выбрали «Автобус», 2-й счетчик будет заполнен цветом шины «Зеленый», «Белый» ».Spinner не заселен фрагментом

Я сделал это в mainactivity успешно. Но когда я пытаюсь реализовать во фрагменте, 2-й счетчик не заполняется, и также нет ошибки.

Я предоставляю код, который я попытался реализовать в фрагменте.

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
// Inflate the layout for this fragment 

View rootView = inflater.inflate(R.layout.fragment_info_form, container, false); 
    //spCountries = (Spinner) v.findViewById(R.id.idCrimePlace); 

//set the spinners 
crimePlace = (Spinner) rootView.findViewById(R.id.idCrimePlace); 
metro = (Spinner) rootView.findViewById(R.id.idMetro); 

crimePlace.setOnItemSelectedListener((AdapterView.OnItemSelectedListener) this); 
crimePlace.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

      String spCrimePlace= String.valueOf(crimePlace.getSelectedItem()); 
      //Toast.makeText(this, crimePlace, Toast.LENGTH_SHORT).show(); 

      if(spCrimePlace.contentEquals("Car")) { 
       List<String> list = new ArrayList<String>(); 
       list.add("Red"); 
       list.add("Blue"); 
       list.add("Others"); 
       ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getActivity().getApplicationContext(), 
         android.R.layout.simple_spinner_item, list); 
       dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       dataAdapter.notifyDataSetChanged(); 
       metro.setAdapter(dataAdapter); 
      } 
      if(spCrimePlace.contentEquals("Bus")) { 
       List<String> list = new ArrayList<String>(); 
       list.add("Green"); 
       list.add("White"); 
       list.add("Other"); 
       ArrayAdapter<String> dataAdapter2 = new ArrayAdapter<String>(getActivity().getApplicationContext(), 
         android.R.layout.simple_spinner_item, list); 
       dataAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       dataAdapter2.notifyDataSetChanged(); 
       metro.setAdapter(dataAdapter2); 
      } 
     } 

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

     } 
    }); 
return rootView; 
} 
+0

Где вы настройки адаптера для 'crimePlace' блесны? Почему 'setOnItemSelectedListener' вызывается дважды на' crimePlace'? Второй 'setOnItemSelectedListener' сначала переопределит. – RadekJ

+0

в том же фрагменте. метровой прядильщик будет заселен по полю. Выбран преступление. – Avijit

+0

crimePlace вертушка получит значение от string.xml не дважды, первый один

crimePlace.setOnItemSelectedListener((AdapterView.OnItemSelectedListener) this);
Я также попытался комментируя линию, но не работает :( @radekJ – Avijit

ответ

0

Попробуйте вызвать адаптер, как:

ArrayAdapter dataAdapter = new ArrayAdapter(this.getActivity(), 
         android.R.layout.simple_spinner_item, list); 

, а также использовать equals() вместо contentEquals

+0

ArrayAdapter dataAdapter = new ArrayAdapter (this.getActivity() , android.R.layout.simple_spinner_item, список); , показывающий ошибку в this.getActivity(). – Avijit

+0

попробуйте использовать только 'getActivity' или' getContext' – rafsanahmad007

+0

Я использую getActivity(). Но все же не заполненный метровой прядильщик – Avijit