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

问题描述 投票:0回答:1

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

有谁知道如何解决这个问题?我已经尝试了一切,但我做不到。

java android android-layout dialog spinner
1个回答
0
投票

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

button_clear.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //reset all filters
            filterDialog = new FilterDialogFragment();            }
    });
© www.soinside.com 2019 - 2024. All rights reserved.