延迟后自动更改片段的方法

时间:2015-12-30 19:17:02

标签: android android-fragments

我的应用程序以FragmentA开头。我希望FragmentA出现5秒钟,然后显示另一个FragmentB替换FragmentA。

我已经通过以下方式显示了FragmentA:

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        FragmentA  frag = new FragmentA();
        FragmentManager fm = getSupportFragmentManager();       
        FragmentTransaction ft = fm.beginTransaction().add(R.id.fl,frag); 

        ft.commit();

不确定在此之后该怎么做。

3 个答案:

答案 0 :(得分:3)

如果您需要在延迟后运行一些代码,请使用Handler。 例如:

final Handler handler = new Handler();

handler.postDelayed(new Runnable() {
      @Override
      public void run() {
        hideFragmentA();
        showFragmentB();
      }
    }, 5000)

其中5000 - 以毫秒为单位的延迟

答案 1 :(得分:3)

最初致电

getSupportFragmentManager().beginTransaction()
            .replace(R.id.fl, new FragmentA())
            .commit();

然后添加:

Handler handler = new Handler();
Runnable runnable = new Runnable() {
          @Override
          public void run() {
             //Second fragment after 5 seconds appears
             getSupportFragmentManager().beginTransaction()
                 .replace(R.id.fl, new FragmentB())
                 .commit();
          }
    };

handler.postDelayed(runnable, 5000);

更新:只需从Handler中删除runnable,以防止在活动被销毁后执行runnable。

@Override
   public void onDestroy () {
     handler.removeCallbacks(runnable);
     super.onDestroy();
}

答案 2 :(得分:1)

使用以下代码段替换片段:

FragmentB fragmentB= new FragmentB();
getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.fl, fragmentB)
            .commit();

如果您需要在5秒后进行片段替换,只需安排一个事件/任务5秒钟,当时间过去时,只需要进行更换。