gpt4 book ai didi

android - 键盘弹出后后退按钮代码未触发

转载 作者:行者123 更新时间:2023-11-29 21:12:22 25 4
gpt4 key购买 nike

我不想把标题弄得太长,所以我会在这里展开。我有一个 fragment (称为签名),当我按下该 fragment 中的后退按钮时,我想调用一个方法来保存控件的数据(EditText 字段等)。因此,我实现了一个 OnKeyListener() 以便我可以调用我的保存方法。这就是我的 keyListener 的样子。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
context = getActivity();

textFields = new ArrayList<EditText>();//These will store my dynamically generated controls
signatures = new ArrayList<DrawingView>();//These will store my dynamically generated controls

view = inflater.inflate(R.layout.signatures, container, false);


view.setFocusableInTouchMode(true);
view.requestFocus();
view.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if( keyCode == KeyEvent.KEYCODE_BACK )
{
storeData();//This method will save all the data

getFragmentManager().popBackStack("signature", FragmentManager.POP_BACK_STACK_INCLUSIVE);
return true;
}
else
{
return false;
}
}
});

//Create the main layout
RelativeLayout mainLayout = (RelativeLayout)view.findViewById(R.id.mainLayout);

//Dynamically generate the layout
setupPage(mainLayout);

return view;
}

所以问题来了。我将在上一个 fragment 上单击下一步,这将启动此 fragment (签名)。该 fragment 将在没有键盘弹出窗口的情况下毫无问题地启动。如果我按下后退按钮,它将毫无问题地启动 keyListener 代码。但是,只要我单击 EditText 并弹出键盘,如果我按回键清除键盘,则不会发生任何事情(这意味着 keyListener 代码不会被执行,这是有道理的)。这并不让我担心,但是当我第二次按返回键返回到前一个 fragment 时,代码没有得到执行。我相信对此有更深入的理解,但我似乎无法弄清楚。

最佳答案

Fragments由Activity调用的Fragment Managers管理;因此,要控制单击后退按钮时要执行的操作,您必须在 Activity 中执行此操作;

现在,如果您有多个 fragment 集,您应该使用标签来查找它们,检查它们是否可见,如果可见,请执行上述操作。

当设置你的 fragment 时,你应该给它们一个标签,然后使用这个标签来 findFragmentByTagName() 并做一个 if 检查以查看当前设置了哪个 fragment ;如果您需要更多帮助,请告诉我。

希望对您有所帮助!

关于android - 键盘弹出后后退按钮代码未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22408576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com