Кнопка в MainActivity, Сброс счетчика в DialogFragment - PullRequest
0 голосов
/ 21 марта 2019

У меня есть две кнопки в MainActivity, первая открывает настраиваемый фрагмент DialogFragment с некоторыми счетчиками, а другая - сбрасывает счетчики этого DialogFragment.

Когда я нажимаю кнопку сброса, он вызывает этот метод, который находится в DialogFragment:

 public class FilterDialogFragment extends DialogFragment {
    private View view;
    // ...

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

        // start the spinners and adapters here

        return view;
    }

    public void resetFilters() {
        if (view != null) {
            categorySpinner.setSelection(0);
            productSpinner.setSelection(0);
            priceSpinner.setSelection(0);
        }
    }
    // some more codes here
}

Моя основная активность:

public class MainActivity extends AppCompatActivity {


    private FilterDialogFragment filterDialog;
    private Button button_clear;
    private Button button_filter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button_clear = findViewById(R.id.button_clear);
        button_filter = findViewById(R.id.button_filter);

        filterDialog = new FilterDialogFragment();

        button_filter.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Show the dialog containing filter options
                filterDialog.show(getSupportFragmentManager(), FilterDialogFragment.TAG);
            }
        });

        button_clear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //reset all filters
                filterDialog.resetFilters();
            }
        });

        //some more codes here
    }
    //some more methods here
}

Но при нажатии кнопки, которая открывает DialogFragment, значения счетчиков остаются прежними, а не возвращаются данные позиции 0 каждого счетчика.

Кто-нибудь знает, как решить эту проблему? Я все перепробовал и не могу.

1 Ответ

0 голосов
/ 22 марта 2019

Самый простой способ, который я в итоге нашел, состоял в том, чтобы удалить метод resetFilters, и вместо этого я сделал это:

button_clear.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //reset all filters
            filterDialog = new FilterDialogFragment();            }
    });
...