Объект не обновляется во фрагменте - PullRequest
0 голосов
/ 30 августа 2018

Я делаю проект Android, пытаюсь работать с фрагментом

у одного из моих фрагментов есть спиннер, для которого мне нужен отдельный слушатель

когда я устанавливаю слушателя, я отправляю объект конструктору, так как мне нужен этот объект, я не знаю, почему я получаю нулевое значение все время, когда я вызываю его во фрагменте, когда он обновляется в слушателе

возможно, мне нужно использовать другой способ для передачи объектов, но я не нашел ни одного

Буду признателен, если вы поможете мне узнать, почему [selectedTrackable] все время является нулевым во фрагменте? и если есть лучший способ для вызова объекта между фрагментами и слушателями

вот мой код:

public class AddTracking extends Fragment {
    Spinner trackableSpinner;
    Context context;
    HashMap <Integer, MyTrackable> myTrackables ;
    MyTrackable chosenTrackable;
    private static final String TAG = "AddTracking";

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

        context = container.getContext();
        View view = inflater.inflate(R.layout.fragment_add_tracking, container, false);

        myTrackables= new Model(view.getContext()).getTrackables();

        //initilizing
        trackableSpinner =   view.findViewById(R.id.trackable_spinner);

        //setup trackable spinner
        ArrayAdapter trackableSpinnerAdapter = new ArrayAdapter(this.getActivity(),
                android.R.layout.simple_spinner_item, new ArrayList<>(myTrackables.values()));
        trackableSpinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        trackableSpinner.setAdapter(trackableSpinnerAdapter);
        trackableSpinner.setOnItemSelectedListener( new SpinnerTrackableItemSelectedListener(this.getActivity(),chosenTrackable));




        chosenTrackable = myTrackables.get(trackableSpinner.getSelectedItemPosition());
        Log.d(TAG, "onCreateView:  " + chosenTrackable);
         return view;
    }
}

listner:

public class SpinnerTrackableItemSelectedListener implements AdapterView.OnItemSelectedListener {
Context  context ;
private static final String TAG = "SpinnerTrackableItemSel";
MyTrackable chosenTrackable;

public SpinnerTrackableItemSelectedListener(Context context, MyTrackable chosenTrackable) {
    this.context = context;
    this.chosenTrackable = chosenTrackable ;
}

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    chosenTrackable = (MyTrackable) parent.getAdapter().getItem(position);
 Log.d(TAG, "loadTimeSpinner: " + chosenTrackable);

}

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

}




}
...