2014-03-12 64 views
0

你好,我有一個測驗,在我的應用程序中有2000個問題,我想單擊按鈕時開始一個隨機意圖。但我的代碼不起作用。我不知道它有什麼問題。爲了更容易在這裏顯示它,我在陣列中只放了4個字符串Android隨機意向與陣列

public void KlickA (View view) { 

    final String[] fragen = {"Frage1Activity.class","Frage2Activity.class","Frage3Activity.class","Frage4Activity.class"}; 
    Button buttonfrag = (Button)findViewById(R.id.fragzufall); 
    buttonfrag.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
    int random = (int) (Math.random() *4); 
    Intent intent = new Intent(fragen[random]); 
    startActivity(intent); 
    }});  
} 
+0

它是如何不工作? – Sujen

+0

請不要爲每個問題開始一個活動,只需更改您的意見的文本。它讓你陷入真正的麻煩。您必須在Manifest.xml中聲明每個Activity,您不能執行全局更改等。對於你的下一個問題,請添加你的logcat! –

+1

爲什麼不啓動一個活動,然後隨機選擇一個問題以在活動的onCreate()中顯示和處理該問題的顯示?你可以使用Fragment來解決不同類型的問題。 – BVB

回答

0
final String[] fragen = {"Frage1Activity.class","Frage2Activity.class","Frage3Activity.class","Frage4Activity.class"}; 

對於你的意圖,你必須寫這樣的事:

Intent intent = new Intent(MainActivity.this,fragen[random]); // error here !!! 

這裏你

fragen[random]String但它必須是財產以後這樣的:

Frage3Activity.class // class not String

不喜歡"Frage3Activity.class"// string


解決方案:

使用:

Class cl = Class.forName(fragen[random]);

則:

Intent intent = new Intent(MainActivity.this, cl); 

最後:

public void KlickA (View view) { 
    final String[] fragen = {"Frage1Activity.class","Frage2Activity.class","Frage3Activity.class","Frage4Activity.class"}; 
    Button buttonfrag = (Button)findViewById(R.id.fragzufall); 
    buttonfrag.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      int random = (int) (Math.random() *4); 
      Class cl = Class.forName(fragen[random]); 
      Intent intent = new Intent(MainActivity.this, cl); 
      startActivity(intent); 
     } 
    });  
} 
0

您是否在Manifest中添加了活動名稱?

它應該像

Intent intent = new Intent(MainActivity.this, fragen[random]); 
+0

我試過這個,但它給了我錯誤「構造函數意圖(新View.OnClickListener(){},字符串)是不確定的」 –

+0

給出它是一個更新,你必須參考活動 –

+0

是的活動是在清單中設置的,如果啓動他們沒有隨機按鈕,他們的工作。 –

0

的問題是在意向創作。如果用String創建一個intent,這意味着你想用一個動作創建一個intent,而不是類。在你的情況,你想創建一個明確的類(如Frag1Activity.class)的意圖,你可以嘗試用不同的構造函數創建的意圖:

//Create an intent for a specific component. 
Intent(Context packageContext, Class<?> cls) 

例如,下面的是我如何開始的DetailActivity與意圖:

Intent intent = new Intent(this, DetailActivity.class); 
intent.setAction("View"); 
intent.putExtra("category", itemSelected.category); 
intent.putExtra("entree_name", itemSelected.name); 
startActivity(intent); 

希望它有幫助。

0

你可以創建數組意向像這樣:

Intent[] intentArray = {new Intent(this, Frage1Activity.class), new Intent(this, Frage2Activity.class), 
    new Intent(this, Frage3Activity.class), new Intent(this, Frage4Activity.class)}; 


int random = (int) (Math.random() *4); 
Intent intent = intentArray[random];