MainActivity 中的按钮,DialogFragment 中的重置微调器

Button in MainActivity, Reset spinner in a DialogFragment

我在 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的按钮,Spinners的值保持不变,而不是返回每个spinner的位置0的数据。

有大神知道怎么解决吗?我什么都试过了还是不行。

我最终找到的最简单的方法是删除 resetFilters 方法,但我这样做了:

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