Android随机意图与数组

时间:2014-03-12 21:46:52

标签: android android-intent random

您好我的应用程序中有2000个问题的测验,我想在点击按钮时启动随机意图。但我的代码不起作用。我不知道它有什么问题。为了更容易在这里显示它我在阵列中只放了4个字符串

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

4 个答案:

答案 0 :(得分:0)

您是否在Manifest中添加了活动名称?

它应该像

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

答案 1 :(得分:0)

问题出在意图创造上。如果使用String创建intent,则意味着您要使用操作创建intent,而不是类。在您的情况下,您希望使用显式类(如Frag1Activity.class)创建intent,您可以尝试使用不同的构造函数创建intent:

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

例如,以下是我如何使用intent启动DetailActivity:

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

希望它有所帮助。

答案 2 :(得分: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);
        }
    });    
}

答案 3 :(得分:0)

你可以像这样创建Intent数组:

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