gpt4 book ai didi

android - 在一个 Activity 中的 fragment 之间导航

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:56:33 24 4
gpt4 key购买 nike

我想使用一个包含多个 fragment 的 Activity 并在 fragment 之间导航。例如,在 Activity 中,有一个 ListView 是一个 fragment ,当用户从列表中选择一个项目时, View 将导航到另一个 fragment ,如何实现?

我知道有一个不错的tutorial在开发人员网站上,但它处理平板电脑屏幕,其中两个 Pane 布局,一个列表 fragment 和一个详细 fragment 显示在一个屏幕上。我只想在 fragment 之间导航而不在一个屏幕中显示两个 fragment 。

有教程可以教我怎么做吗?

最佳答案

简而言之,您的问题的答案是通知您的主机 Activity ,然后让您的主机 Activity 使用 FragmentManager 替换您当前的 fragment 容器。

一种方法是在您的第一个 fragment 中创建一个接口(interface),让您的主机 Activity 注册/监听(实现)此接口(interface),然后让您的 FragmentManager 在监听器回调中用第二个 fragment 替换容器内容。

我不确定教程,但这是我的 fragment :第一个 fragment

public class First extends Fragment{
private static onMySignalListener listener;

//call this function from whatever you like i.e button onClickListener
public void switchWindow() {
if(listener != null){
listener.onMySignal();
}
}

public interface onMySignalListener {
//customize this to your liking

//plain without argument
void onMySignal();

//with argument
void onMySignalWithNum(int mNum);
}

public static void setOnMySignalListener(onMySignalListener listener) {
First.listener = listener;
}}

主机 Activity

public class HostActivity extends FragmentActivity implements onMySignalListener{
private final String ADD_TAG_IF_NECESSARY = "mTag";

@Override
public void onCreate(Bundle ssi) {
setContentLayout(R.layout.main);

FirstFragment.setOnMySignalListener(this);
}

@Override
public void onMySignal() {
//if you're using compat library
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();

//initialize your second fragment
sfragment = SecondFragment.newInstance(null);
//replace your current container being most of the time as FrameLayout
transaction.replace(R.id.container, fragment, ADD_TAG_IF_NECESSARY);
transaction.commit();
}

@Override
public void onMySignalWithNum(int mNum) {
//you can do the same like the above probably with your own customization
}}

这只是您如何实现接口(interface)的示例,请自行整理。请注意,如果您有很多 fragment 想要通知您的主机 Activity 有关某事,这将无效。这样做会导致您对主机 Activity 实现各种监听器。

关于android - 在一个 Activity 中的 fragment 之间导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9095910/

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