我有一个带有两个按钮的片段 - 确认并取消。一个按钮,即确认按钮,从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()方法。
任何帮助将不胜感激。
只需致电:
getActivity().onBackPressed();
来自oskarko的解决方案有效,但它会将您带回主Activity。
如果您希望片段从片段内部关闭,并且您不想离开当前的Activity,请尝试以下方法:
getFragmentManager().beginTransaction().remove(ActivityFragment.this).commit();
其中“ActivityFragment”是片段的名称。
考虑一下:如果你添加你的FragmentManager将片段添加到backStack(fragmentTransaction.addToBackStack(null);
),你不应该使用这种方法,而是使用:
getFragmentManager().popBackStack();
原因是如果您使用第一种方法关闭它,您的片段仍然在backStack中,您必须单击上一个按钮两次才能转到上一个活动。