您好我的应用程序中有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);
}});
}
答案 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];