我有一个带有两个按钮的片段 - 确认并取消。一个按钮,即确认按钮,从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()方法。
任何帮助将不胜感激。
答案 0 :(得分:15)
请致电:
getActivity().onBackPressed();
答案 1 :(得分:1)
oskarko工作中的解决方案,但它带您回到主要活动。
如果您希望片段从片段内部关闭并且不想离开当前活动, 尝试这种方法:
getFragmentManager().beginTransaction().remove(ActivityFragment.this).commit();
“ ActivityFragment”是片段的名称。
考虑:
如果添加FragmentManager,则将Fragment添加到backStack(fragmentTransaction.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()