我在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的数据。
有谁知道如何解决这个问题?我已经尝试了一切,但我做不到。
我最终找到的最简单的方法是删除resetFilters方法,而不是我这样做:
button_clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//reset all filters
filterDialog = new FilterDialogFragment(); }
});