Перезагрузка фрагмента с новым значением - PullRequest
0 голосов
/ 21 июня 2020

Когда я снова пытаюсь перезагрузить фрагмент, значение конструктора не изменяется. Например, если я открываю приложение, оно работает отлично, но когда я что-то меняю с помощью Arraylist и пытаюсь перезагрузить фрагмент, каким-то образом мой ArrayList возвращает 0, хотя я передаю список.

Мой код активности - :

private void setGraphComponent(ArrayList<SpinnerAdapter> weatherSensor, ArrayList<SpinnerAdapter> cattleSensor, ArrayList<SpinnerAdapter> weatherSensor2, ArrayList<SpinnerAdapter> volt, ArrayList<SpinnerAdapter> sign, ArrayList<SpinnerAdapter> vehicleSensor) {
        ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
        ViewPager graphPager = findViewById(R.id.graphPager);

        if (weatherSensor.size() > 1) {
            viewPagerAdapter.addFragment(new GraphFragment(this, StaticConfig.SENSOR_1, weatherSensor, 1));
        }
}

И мой код фрагмента:

public GraphFragment(Context context, String title, ArrayList<SpinnerAdapter> adapters, int sensorType) {
        this.context = context;
        this.title = title;
        this.spinnerAdapters = adapters;
        this.sensorType = sensorType;
    }

 public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.graph_fragement, container, false);

        TextView textView = view.findViewById(R.id.title);
        Spinner devices = view.findViewById(R.id.devices);


        init_volleyCallback();
        stringVolleyService = new StringVolleyService( stringResult, context);
// Here in spinnerAdapters when I am loading first time its coming 3 count which suppose to be but when I reload it again its coming 0. 
        setSpinner(spinnerAdapters, devices);

        textView.setText(title);
        return view;
    }

Любые предложения будут большим подспорьем. Заранее спасибо.

1 Ответ

0 голосов
/ 21 июня 2020

Вы не должны создавать настраиваемый конструктор при использовании фрагментов в Android. Вы можете

  1. передавать аргументы фрагменту через setArguments(Bundle) и позже получать их с помощью getArguments()
  2. вы можете использовать onAttach(Context).

Они указаны в документации .

В вашем случае, возможно, переопределение onAttach(Context) имеет смысл, так как вы получаете экземпляр контекста, и вам гарантируется, что это является первым приложением код может работать там, где фрагмент готов к использованию .

Таким образом, реализация onAttach в вашем фрагменте может выглядеть так:

@Override
public void onAttach (Context context){
 YourActivity activity = (YourActivity) context;
 this.title = activity.title; // or activity.getTitle(), you get the idea
 this.spinnerAdapters = activity.adapters;
 this.sensorType = activity.sensorType;
}
...