如何移除后退栈片段的焦点?

7
我正在使用片段来开发我的应用程序。我有一个包含EditText和一些Dialogfragment的片段。

当我点击特定的小部件时,它会移动到下一个片段。我需要在后退堆栈中保留第一个片段,因此我还添加了addToBackStack方法。

第二个片段不包含任何EditText。现在的问题是,当我们触摸或按下第二个片段时,第一个片段中的EditText会获得焦点并弹出对话框。

我得到了以下代码:

getView().setFocusableInTouchMode(true);
getView().requestFocus();

我把这段代码放进了 onResume() 中。但是根据一些安卓文档,onResume() 可能不会被调用。我该怎么办?这是第二个活动的图片,显示了问题:enter image description here

@user2894326,你在这个设计中使用了哪个库? - Akshay Mukadam
我没有使用任何库。 - Anu
你想在从一个片段调用另一个片段时隐藏键盘吗? @user2894326 - Jigar Shekh
不,这是第二个片段,没有编辑文本。当从第一个片段移动到第二个片段时,键盘不会显示。问题在于没有编辑文本,并且它看起来像编辑文本获得焦点,触摸时会显示警报对话框(这些警报对话框应该在第一个片段中弹出)。 - Anu
2个回答

0

从您的问题中我了解到,您的当前片段没有焦点

尝试以下操作

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInnstance) {
    View view = inflater.inflate(R.layout.your_layout, container, false);
    view.setOnClickListener(this);
    return view;
}

0
我的问题的解决方案是,不要添加片段,而是使用replace,还有一件事,我们也可以通过对布局进行点击来避免这种情况。

1
不要替换,因为这会导致许多情况需要您处理。最好尝试我的上面的答案。你提供的是替代方案,而不是问题的解决方案。 - Rajeshwar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接