android – 在一个活动中的片段之间导航

前端之家收集整理的这篇文章主要介绍了android – 在一个活动中的片段之间导航前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想使用一个包含多个片段并在片段之间导航的Activity.例如,在活动中,有一个列表视图,它是一个片段,当用户从列表中选择一个项目时,视图将导航到另一个片段,如何实现?

我知道开发者网站上有一个很好的tutorial,但它处理平板电脑屏幕,其中两个窗格布局,一个列表片段和一个详细片段显示在一个屏幕上.我只想在片段之间导航而不在一个屏幕中显示两个片段.

是否有教程可以教我如何做到这一点?

解决方法

简而言之,您的问题的答案是通知您的主机活动,然后让您的主机活动使用FragmentManager替换您当前的片段容器.

其中一种方法是在第一个片段中创建一个接口,让你的主机活动注册/监听(实现)到这个接口,然后让你的FragmentManager用侦听器回调中的第二个片段替换容器内容.

我不确定教程,但这是我的片段:
第一片段

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;
}}

主机活动

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
}}

这只是一个关于如何实现界面的例子,请自己整理一下.请注意,如果您有很多片段想要通知您的主机活动有关某些内容,则此方法无效.这样做会引导您实现对主机活动的各种监听.

原文链接:https://www.f2er.com/android/316800.html

猜你在找的Android相关文章