gpt4 book ai didi

android - Android 4.3 及更低版本中 getChildFragmentManager 的奇怪行为

转载 作者:行者123 更新时间:2023-11-30 02:54:06 25 4
gpt4 key购买 nike

我对 getChildFragmentManager 方法有疑问。

我用它在 viewpager 中创建了几个嵌套 fragment 。这个 Viewpager 在 PopupWindow 中。这样,就创建了 fragment ,我可以在 UI 中看到它们。 fragment 包含一个 GridView 。

不幸的是,对于 android 4.3(API 18) 或更低版本,我无法选择 gridview 的项目。同时,使用 android 4.4 (API 19) 我可以做到!

为了拦截项目点击,我使用了 Activity 的回调,Activity 的 onAttach 方法是正确的。

我认为问题是由 getChildFragmentManager 引起的,但我不确定。

如果有人遇到这个问题,他能解释一下他的解决方案吗?谢谢!

最佳答案

我解决了我的问题。

使用 Adroid 4.4 我没有遇到任何问题,所以我没有对我的代码进行任何更改。这样,我在gridview中添加了一个监听器。

gridView.setOnItemClickListener(this);

... // class extends Listener

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(DEBUG) Log.d("EmojiconGridFragment","entered");
if (mOnEmojiconClickedListener != null) {
if(DEBUG) Log.d("EmojiconGridFragment","itemClicked");
mOnEmojiconClickedListener.onEmojiconClicked((Emojicon) parent.getItemAtPosition(position));
}
}

对于 android 4.3 及更早的版本,我必须添加代码来处理点击项,因为普通监听器无法拦截点击。所以,我为每个项目都得到了它,如下所示:

//in the adapter class for grid view insert this code
if(!Utils.hasKitKat()) {
holder.icon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("Emoicons", " clicked");
view.setSelected(true);
mOnEmojiconClickedListener.onEmojiconClicked(emoji);
}
});
}

其中 Utils.HasKitkat() 是一种检查它是否在 android kitkat 中运行的方法。

public static boolean hasKitKat() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
}

我希望这个解决方案对某人有用。

关于android - Android 4.3 及更低版本中 getChildFragmentManager 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23606814/

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