我有5个活动.我想要发生的是在MainMenu上单击"开始"按钮时打开随机活动.
例如:活动1 - >活动4 - >活动3
这是我在开始按钮中的代码
gotoMenu=(Button)findViewById(R.id.btnStart);
gotoMenu.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
startActivity(new Intent(MainMenu.this, Menu_WelcomeLuzon.class));
overridePendingTransition(R.animator.transition_fade_in, R.animator.transition_fade_out);
}
});Run Code Online (Sandbox Code Playgroud)
任何代码片段都将是一个很大的帮助.提前致谢!
要启动活动,您需要使用意图.单击按钮时可以调用此方法,如下所示:
Button myButton = (Button) findViewById(R.id.MY_BUTTON);
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(CurrentActivity.class, NextActivity.class);
startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
为了使这个随机,我们需要稍微改变它,所以它更像是这样:
Button myButton = (Button) findViewById(R.id.MY_BUTTON);
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Here, we are generating a random number
Random generator = new Random();
int number = generator.nextInt(5) + 1;
// The '5' is the number of activities
Class activity = null;
// Here, we are checking to see what the output of the random was
switch(number) {
case 1:
// E.g., if the output is 1, the activity we will open is ActivityOne.class
activity = ActivityOne.class;
break;
case 2:
activity = ActivityTwo.class;
break;
case 3:
activity = ActivityThree.class;
break;
case 4:
activity = ActivityFour.class;
break;
default:
activity = ActivityFive.class;
break;
}
// We use intents to start activities
Intent intent = new Intent(getBaseContext(), activity);
startActivity(intent);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您愿意,可以在此处阅读有关开始活动和使用意图的更多信息.
如果您不想打开已经打开的活动,那将会更复杂一些.
在您的主要活动中添加以下代码(它与上一个答案中的代码几乎相同,但有点不同):
Button myButton = (Button) findViewById(R.id.MY_BUTTON);
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// We are creating a list, which will store the activities that haven't been opened yet
ArrayList<Class> activityList = new ArrayList<>();
activityList.add(ActivityOne.class);
activityList.add(ActivityTwo.class);
activityList.add(ActivityThree.class);
activityList.add(ActivityFour.class);
activityList.add(ActivityFive.class);
Random generator = new Random();
int number = generator.nextInt(5) + 1;
Class activity = null;
// Here, we are checking to see what the output of the random was
switch(number) {
case 1:
activity = ActivityOne.class;
// We are adding the number of the activity to the list
activityList.remove(ActivityOne.class);
break;
case 2:
activity = ActivityTwo.class;
activityList.remove(ActivityTwo.class);
break;
case 3:
activity = ActivityThree.class;
activityList.remove(ActivityThree.class);
break;
case 4:
activity = ActivityFour.class;
activityList.remove(ActivityFour.class);
break;
default:
activity = ActivityFive.class;
activityList.remove(ActivityFive.class);
break;
}
// We use intents to start activities
Intent intent = new Intent(getBaseContext(), activity);
// `intent.putExtra(...)` is used to pass on extra information to the next activity
intent.putExtra("ACTIVITY_LIST", activityList);
startActivity(intent);
}
}
Run Code Online (Sandbox Code Playgroud)
在所有其他5项活动中,请使用以下代码:
Button myButton = (Button) findViewById(R.id.ANOTHER_BUTTON);
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ArrayList<Class> activityList = new ArrayList<>();
Bundle extras = getBaseContext().getIntent().getExtras();
activityList = extras.get("ACTIVITY_LIST");
if(activityList.size() == 0) {
// Do something when after all activities have been opened
doSomeAction();
} else {
// Now, the random number is generated between 1 and however many
// activities we have remaining
Random generator = new Random();
int number = generator.nextInt(activityList.size()) + 1;
Class activity = null;
// Here, we are checking to see what the output of the random was
switch(number) {
case 1:
// We will open the first remaining activity of the list
activity = activityList.get(0);
// We will now remove that activity from the list
activityList.remove(0);
break;
case 2:
// We will open the second remaining activity of the list
activity = activityList.get(1);
activityList.remove(1);
break;
case 3:
// We will open the third remaining activity of the list
activity = activityList.get(2);
activityList.remove(2);
break;
case 4:
// We will open the fourth remaining activity of the list
activity = activityList.get(3);
activityList.remove(3);
break;
default:
// We will open the fifth remaining activity of the list
activity = activityList.get(4);
activityList.remove(4);
break;
}
// Note: in the above, we might not have 3 remaining activities, for example,
// but it doesn't matter because that case wouldn't be called anyway,
// as we have already decided that the number would be between 1 and the number of
// activities left.
// Starting the activity, and passing on the remaining number of activities
// to the next one that is opened
Intent intent = new Intent(getBaseContext(), activity);
intent.putExtra("ACTIVITY_LIST", activityList);
startActivity(intent);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2036 次 |
| 最近记录: |