[英]fragment wont transaction when click on the button which change the fragment to another
[英]Close a fragment on button click which is inside that fragment
我有一個帶有兩個按鈕的片段 - 確認和取消。 一個按鈕,即確認按鈕,從 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 的解決方案有效,但它使您回到主要活動。
如果您希望 Fragment 從 Fragment 內部關閉並且不想離開當前 Activity,請嘗試以下方法:
getFragmentManager().beginTransaction().remove(ActivityFragment.this).commit();
其中“ActivityFragment”是您的 Fragment 的名稱。
考慮一下:如果您添加 FragmentManager 將 Fragment 添加到backStack ( fragmentTransaction.addToBackStack(null);
),則不應使用此方法,而是使用:
getFragmentManager().popBackStack();
這樣做的原因是如果你用第一種方法關閉它,你的 Fragment 仍然在backStack 中,你必須點擊上一個按鈕兩次才能到達上一個活動。
科特林:
在活動中:
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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.