【发布时间】:2019-03-21 15:58:21
【问题描述】:
我在 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的数据。
有人知道如何解决这个问题吗?我什么都试过了,还是不行。
【问题讨论】:
-
请提供所有相关代码。另外,您是否创建了一个名为 View 的变量,或者您的检查是否应该有 view(全小写)?
-
嗨@NikosHidalgo,感谢您的支持。我更新了我的代码。
-
我完全不明白你在这里想要什么。那么,显示对话框按钮有效,而重置按钮无效?
-
@HauLuu,抱歉我的英语不好。没错,对话框有效,但重置按钮无效
-
@MurilloComino,你试过在FilterDialogFragment中调试resetFilters方法吗?视图变量为空的任何更改
标签: java android android-layout dialog spinner