gpt4 book ai didi

android - 添加另一个 fragment 时 fragment Activity 变为空

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:07 24 4
gpt4 key购买 nike

我正在使用 android 提供的兼容性库 android.cupport-v4.jar,我发现了一个问题,我开始构建一个 TabActivity,它的选项卡中包含几个 fragment 。

我有一个带有 GridView 的起始选项卡,我从适配器中的项目监听器调用以下代码:

FragmentManager manager = getSupportFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
ft.add(R.id.relativeLayoutContent, newFragment);
// ft.replace(R.id.relativeLayoutContent, newFragment);
ft.addToBackStack(null);
ft.commit();

问题是当我打开新 fragment 并返回到第一个 fragment 时,它不会用于 onAttach,因为它从未被取消附加,并且由于新 fragment 是, Activity 现在正在举行最后一个,但不是第一个,如果我再次尝试单击一个元素,它将崩溃并告诉我 fragment 中的 getActivity 方法为空。

有什么解决方法吗?

最佳答案

我不太确定你想要完成什么,但无论如何我都会尝试一下。

您应该使用 fragmentmanager 来保存不同的 fragment ,但是当您在 FragmentTransaction 中使用 add 方法时,为您的 fragment 分配一个标签,以便您可以轻松地在 fragment 之间来回切换。

TabActivity 也已弃用。您是否考虑过在 ActionBar 中使用 Tabs? http://developer.android.com/guide/topics/ui/actionbar.html#Tabs

这是我从我目前正在做的事情中提取的一个 fragment :

public void changeFragment(String tag){

Fragment tmpFragment;
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();

//look to see if we have already added the fragment
tmpFragment = getFragmentManager().findFragmentByTag(tag);

//we currently have a fragment, hide it
if (currentFragment != null){
fragmentTransaction.detach(currentFragment);
}

//did not find the fragment
if (tmpFragment == null){
if (tag.equals("map")){
currentFragment = CustomMapFragment.newInstance();
} else if (tag.equals("list")){
currentFragment = ListFragment.newInstance();
}else {
//TODO
}
//add fragment for 1st time
fragmentTransaction.add(R.id.content_frame, currentFragment, tag);
} else {
//we found the fragment
currentFragment = tmpFragment;
fragmentTransaction.attach(currentFragment); //show the fragment we found
}
fragmentTransaction.commit();
}

您可以使用此方法根据标签在 fragment 之间切换。

关于android - 添加另一个 fragment 时 fragment Activity 变为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9789361/

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