关闭按钮单击上的片段,该片段位于该片段

时间:2017-03-27 10:28:35

标签: android android-fragments onclicklistener

我有一个带有两个按钮的片段 - 确认并取消。一个按钮,即确认按钮,从EditText获取用户输入并将其转换为USSD请求。现在我想让取消按钮关闭该片段,就像alertDialog上的否定按钮一样。

我已经阅读了许多与此类似的问题,但似乎没有一个问题满足我的需要。

public void onClick(View v) {
        switch (v.getId()) {
            case R.id.confirmButton:

                if (inputField.getText().toString().trim().length() == 16) {
                    load();
                    inputField.requestFocus();
                } else if (inputField.getText().toString().trim().length() < 16) {
                    Toast.makeText(getActivity(), R.string.toast_number_not_valid, Toast.LENGTH_SHORT).show();
                }

                break;

            case R.id.cancelButton:
                dismiss();
                break;
        }
    }

 private void load() {
// bla - bla - bla
}

public void dismiss(){
//dear fragment, I don't need you right now, just dismiss
}

这里我需要dismiss()方法。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:15)

请致电:

getActivity().onBackPressed();

答案 1 :(得分:1)

oskarko工作中的解决方案,但它带您回到主要活动。

如果您希望片段从片段内部关闭并且不想离开当前活动, 尝试这种方法:

getFragmentManager().beginTransaction().remove(ActivityFragment.this).commit(); 

“ ActivityFragment”是片段的名称。

考虑: 如果添加FragmentManager,则将Fragment添加到backStackfragmentTransaction.addToBackStack(null);),则不应使用此方法,而应使用:

getFragmentManager().popBackStack(); 

这样做的原因是,如果您使用第一种方法将其关闭,您的片段仍在backStack中,则必须单击两次上一个按钮才能进入上一个活动。

答案 2 :(得分:1)

科特琳:

活动中:

val fragment = SettingFragment.newInstance()

// always create a new transaction to avoid crash
val mTransaction = fragmentManager.beginTransaction()
mTransaction.add(R.id.settingDrawer, fragment)
mTransaction.commit()

片段中:

val manager = requireActivity().supportFragmentManager
manager.beginTransaction().remove(this).commit()