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(); }
});
我在 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(); }
});