【问题标题】:Button in MainActivity, Reset spinner in a DialogFragmentMainActivity 中的按钮,DialogFragment 中的重置微调器
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多