关闭该片段内部按钮单击的片段

问题描述 投票:2回答:2

我有一个带有两个按钮的片段 - 确认并取消。一个按钮,即确认按钮,从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()方法。

任何帮助将不胜感激。

android android-fragments onclicklistener
2个回答
15
投票

只需致电:

getActivity().onBackPressed();

1
投票

来自oskarko的解决方案有效,但它会将您带回主Activity。

如果您希望片段从片段内部关闭,并且您不想离开当前的Activity,请尝试以下方法:

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

其中“ActivityFragment”是片段的名称。

考虑一下:如果你添加你的FragmentManager将片段添加到backStackfragmentTransaction.addToBackStack(null);),你不应该使用这种方法,而是使用:

getFragmentManager().popBackStack(); 

原因是如果您使用第一种方法关闭它,您的片段仍然在backStack中,您必须单击上一个按钮两次才能转到上一个活动。

© www.soinside.com 2019 - 2024. All rights reserved.