esQ*_*mo_ 3 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
}
Run Code Online (Sandbox Code Playgroud)
这里我需要dismiss()方法.
任何帮助将不胜感激.
osk*_*rko 18
只需致电:
getActivity().onBackPressed();
Run Code Online (Sandbox Code Playgroud)
oskarko 的解决方案有效,但它使您回到主要活动。
如果您希望 Fragment 从 Fragment 内部关闭并且不想离开当前 Activity,请尝试以下方法:
getFragmentManager().beginTransaction().remove(ActivityFragment.this).commit();
Run Code Online (Sandbox Code Playgroud)
其中“ActivityFragment”是您的 Fragment 的名称。
考虑一下:如果您添加 FragmentManager 将 Fragment 添加到backStack ( fragmentTransaction.addToBackStack(null);),则不应使用此方法,而是使用:
getFragmentManager().popBackStack();
Run Code Online (Sandbox Code Playgroud)
这样做的原因是如果你用第一种方法关闭它,你的 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()
Run Code Online (Sandbox Code Playgroud)
在片段中:
val manager = requireActivity().supportFragmentManager
manager.beginTransaction().remove(this).commit()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7708 次 |
| 最近记录: |