2016-02-27 26 views
1

我有這個項目,一個測驗應用程序是具體的。我有10個問題要問,我希望它隨機出現在我的應用程序中。截至目前,我使用Tabbed Activity將這些問題放在碎片上。我不知道如何隨機化它。如何在Android中生成隨機片段?

我應該使用活動而不是片段嗎?

這就是我所說的那些片段代碼:

public SectionsPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 


    @Override 
    public int getCount() { 
     // Show 3 total pages. 
     return 3; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
      case 0: return new FirstFragment(); 
      case 1: return new SecondFragment(); 
      case 2: return new ThirdFragment(); 

     } 
     return null; 
    } 
} 

任何建議/建議嗎?我真的需要這個應用程序來完成。謝謝!

+1

如果所有碎片都相同(它們顯示一個問題),那麼只需對問題進行隨機化並使用單個碎片來顯示每個問題。然後添加具有不同問題的同一類的10個實例。 –

回答

0

嘗試創建一個數組的那些片段:

Class[] classes=new Class[numberOfDirrefentFragmenTypes]; 
Class c1 = FirstFragment.class; 
Class c2 = SecondFragment.class; 
classes[0]=c1; 
classes[1]=c2; 

然後,你可以選擇一個隨機類並創建實例:

Random random=new Random(); 
Class randomClass=classes[random.nextInt(classes.size())]; 

所以,你可以在任何時候創建一個隨機片段:

Constructor<?> ctor = randomClass.getConstructor(); 
Object object = ctor.newInstance(new Object[] { ctorArgument }); 

它可能不是最佳的解決方案,但它應該工作。

我希望它有幫助(我沒有編譯代碼)。

+0

片段沒有String參數構造函數。另外,爲什麼不只是創建一個片段實例的Arraylist,只是隨機獲取一個?反思在這裏似乎過分了 –

+0

他可能以後有數百個不同的片段。如果他實例化每個人,它將會受到影響。我同意他應該選擇考慮該項目的用途。 – Nestor

+0

在我上面的評論中,我建議使用'QuestionFragment'類,它只需要一個String參數。然後它是一個類的許多字符串,而不是一個字符串每個片段類 –