Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓按钮碎片不被触发_Android - Fatal编程技术网

Android 安卓按钮碎片不被触发

Android 安卓按钮碎片不被触发,android,Android,为什么碎片中的按钮不能被触发?我已经在这上面花了大约5个小时,但是不会触发onClick/onFocusListener 编辑:代码 因此,此片段位于我的主要活动的ViewPager2上,并且 它只是不会触发任何回调方法。我也尝试过,但这些onClick初始化无处不在 片段: class SearchFragment : Fragment() { private lateinit var searchBinding: FragmentSearchBinding override fun on

为什么碎片中的按钮不能被触发?我已经在这上面花了大约5个小时,但是不会触发onClick/onFocusListener

编辑:代码 因此,此片段位于我的主要活动的ViewPager2上,并且 它只是不会触发任何回调方法。我也尝试过,但这些onClick初始化无处不在

片段:

class SearchFragment : Fragment() {

private lateinit var searchBinding: FragmentSearchBinding

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    searchBinding = FragmentSearchBinding.inflate(layoutInflater)

    interface OnSearch {
        fun onArticleSelected(position: Int)
    }


}



override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_search, container, false)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    var test = activity?.findViewById<TabLayout>(R.id.tab_layout)

    searchBinding.searchBar.setOnFocusChangeListener{view, hasFocus ->
        if (hasFocus){
            if (test != null) {
                test.isVisible = false
            }
            Log.d("SearchFragment", "onFocus")
        }else{
            if (test != null) {
                test.isVisible = true
            }
        }

    }
}



}
class SearchFragment:Fragment(){
私有lateinit var searchBinding:FragmentSearchBinding
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
searchBinding=碎片searchBinding.充气(放平)
界面搜索{
已选择角色的乐趣(位置:Int)
}
}
覆盖创建视图(
充气器:布局充气器,容器:视图组?,
savedInstanceState:捆绑?
):查看{
//为该碎片膨胀布局
返回充气机。充气(R.layout.fragment\u搜索,容器,错误)
}
覆盖已创建的视图(视图:视图,保存状态:捆绑?){
super.onViewCreated(视图,savedInstanceState)
var测试=活动?.findViewById(R.id.tab\U布局)
searchBinding.searchBar.setOnFocusChangeListener{view,hasFocus->
如果(hasFocus){
如果(测试!=null){
test.isVisible=false
}
Log.d(“SearchFragment”、“onFocus”)
}否则{
如果(测试!=null){
test.isVisible=true
}
}
}
}
}
XML:


试试这样的方法

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?) {
    super.onCreateView(view, savedInstanceState)
    val binding = FragmentSearchBinding.inflate(inflater, container, false);
    val view = binding.root
    // Set binding 
    return view;
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    view.findViewById(R.id.searchBar).setOnFocusChangeListener { view, hasFocus ->

    }
}

试试这样的

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?) {
    super.onCreateView(view, savedInstanceState)
    val binding = FragmentSearchBinding.inflate(inflater, container, false);
    val view = binding.root
    // Set binding 
    return view;
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    view.findViewById(R.id.searchBar).setOnFocusChangeListener { view, hasFocus ->

    }
}

你能展示你的代码吗?fragment和Xml代码在这里您提供的代码片段中没有按钮…您能显示您的代码吗?fragment和xmlHere you go the code在您提供的片段代码中没有按钮…FragmentSearchBinding没有使用这些参数膨胀的方法,onViewCreated在onCreateView之前被调用,这将导致运行时错误抱歉,我犯了一些错误。更新谢谢你,Log.d终于显示出来了。两个问题:我的错误是什么?你所说的//Set binding是什么意思?我的意思是你可以在这里设置viewModel需要的变量,如果有
binding.setVariable(BR.vm,mVm)
。你的错误是你的片段没有意识到你膨胀的视图。FragmentSearchBinding没有使用这些参数膨胀的方法,并且onViewCreated在onCreateView之前被调用,这会导致运行时错误抱歉,我犯了一些错误。更新谢谢你,Log.d终于显示出来了。两个问题:我的错误是什么?你所说的//Set binding是什么意思?我的意思是你可以在这里设置viewModel需要的变量,如果有
binding.setVariable(BR.vm,mVm)
。你的错误是你的碎片没有意识到你膨胀的观点。