如何从另一个片段打开片段

时间:2017-01-31 12:56:26

标签: java android android-fragments android-viewpager fragment

我有一个标签式活动,其中有三个标签。主选项卡是主选项卡,它包含一个按钮。我的问题是如何在按下按钮并且将其保持在相同的选项卡式活动后打开新片段? 这是我的Home选项卡类代码:

import android.support.v4.app.FragmentManager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
/**
 * Created by user-pc on 15/01/2017.
 */


public class Home extends Fragment {
    private boolean flag;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.hometab, container, false);
        final Button RestButton = (Button) rootView.findViewById(R.id.RestButton);
        final Button ShopButton = (Button) rootView.findViewById(R.id.ShopButton);
        final Button HangoutButton = (Button) rootView.findViewById(R.id.HangoutButton);
        RestButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
        return rootView;
    }
}

1 个答案:

答案 0 :(得分:0)

在android中添加默认选项卡式活动时,您会获得一个活动,该活动使用ViewPager作为FragmentPagerAdapter管理的片段的容器。

来自FragmentPagerAdapter's documentation

  

当有一些通常更多的静态片段被分页时,这个版本的寻呼机最适合使用,例如一组标签。

如果我理解正确,你想要一个片段,即Home片段,它驻留在一个页面中(让它称之为Page1)与另一个片段动态交换(让我们调用这个新的片段FragmentB)并且如果你切换到另一个页面(让它称之为Page2)并返回到它的页面(这意味着你在切换回Page1时会看到FragmentB),它将作为新片段持续存在。

为此,您似乎最好使用FragmentStatePagerAdapter。在Page1的片段内 - 有一个容器用于另一个片段(片段中的片段),占据父片段的整个区域。其中的第一个和默认片段是Home片段,如果之前没有保存状态,它将在onCreateView方法中动态加载。否则 - 加载的片段将根据保存的状态 - 甚至直接从保存的状态。要拥有该已保存的状态 - 您需要实现onSaveInstanceState(Buncle)以保存已保存的状态。然后将Home片段与FragmentB交换到容器片段中,该片段是每次加载到Page1中的片段 - 但它会记住最后加载到哪个片段 - 并且可以正确地恢复它。