屏幕使用一个活动来实现,屏幕间是相互独立的,屏幕之间的跳转关系通过Intent来实现。

屏幕间跳转分为以下几类:

1. 屏幕1直接跳转到屏幕2

Intent intent = new Intent();

intent.setClass(屏幕1活动名.this,屏幕2活动名.class);

startActivity(intent);

finish(); //结束当前活动

2. 屏幕1带参数跳转到屏幕2

使用Bundle来传参数。

例子:猜拳游戏

界面:

Android 几种屏幕间跳转的跳转Intent Bundle_AndroidAndroid 几种屏幕间跳转的跳转Intent Bundle_public_02

重要代码:

电脑的选择是随机的,本次联系的基本思路是,三个选项利用三个数字来代替,让电脑 随机生成一个数字,根据数字的不同来产生不同的结果。

public void onClick(View v) {

switch (radioGroup.getCheckedRadioButtonId()){

case R.id.stone:

player = 0;

break;

case R.id.scissors:

player = 1;

break;

case R.id.textile:

player = 2;

break;

default:

Toast.makeText(MainActivity.this, "请选择", Toast.LENGTH_LONG).show();

break;

}

skip();

}

//页面跳转

private void skip(){

Intent intent = new Intent();

intent.setClass(MainActivity.this, ResultMainActivity.class);

Bundle bundle = new Bundle();

bundle.putInt("player", player);

bundle.putInt("computer", new Random().nextInt(3));

intent.putExtra("result", bundle);

startActivity(intent);

}

跳转之后,要接受参数:

Bundle bundle = this.getIntent().getBundleExtra("result");

int playerInt = bundle.getInt("player");

int computerInt = bundle.getInt("computer");

猜拳游戏完整代码:


1
activity_first.xml代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical">
<textview android:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="请选择您要出的拳:"android:textsize="20dip">
<radiogroup android:id="@+id/quans"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal">
<radiobutton android:id="@+id/shitou"android:layout_width="wrap_content"android:layout_height="wrap_content"android:checked="true"android:text="石头"android:textsize="20dip">
<radiobutton android:id="@+id/jiandao"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textsize="20dip"android:text="剪刀">
<radiobutton android:id="@+id/bu"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textsize="20dip"android:text="布">
</radiobutton></radiobutton></radiobutton></radiogroup>
<button android:id="@+id/chuquan"android:layout_width="match_parent"android:layout_height="wrap_content"android:textsize="20dip"android:text="出拳">
activity_second.xml代码</button></textview></linearlayout>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical">
<textview android:id="@+id/show"android:layout_width="match_parent"android:layout_height="wrap_content"android:textsize="20dip"android:text="@string/hello_world">
</textview></linearlayout>
firstActivity.java代码
packagecom.example.caiquangame;
importjava.util.Random;
importandroid.os.Bundle;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.RadioGroup;
importandroid.widget.Toast;
importandroid.support.v4.app.NavUtils;
publicclassfirstActivity extendsActivity {
privateButton chuquan;
privateRadioGroup quans;
privateintplayer;
@Override
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
setTitle("猜拳游戏");
chuquan = (Button)findViewById(R.id.chuquan);
chuquan.setOnClickListener(mChuQuanListener);
quans = (RadioGroup)findViewById(R.id.quans);
}
privateOnClickListener mChuQuanListener = newOnClickListener()
{
@Override
publicvoidonClick(View arg0) {
// TODO Auto-generated method stub
switch(quans.getCheckedRadioButtonId())
{
caseR.id.shitou:
player = 0;
break;
caseR.id.jiandao:
player = 1;
break;
caseR.id.bu:
player = 2;
break;
default:
Toast.makeText(firstActivity.this, "请选择", Toast.LENGTH_LONG).show();
break;
}
//将的到的值传给secondActivity
skip();
}
};
privatevoidskip()
{
Intent intent = newIntent();
intent.setClass(firstActivity.this, secondActivity.class);
Bundle bundle = newBundle();
bundle.putInt("player", player);
bundle.putInt("computer", newRandom().nextInt(3));
intent.putExtra("result", bundle);
startActivity(intent);
}
}
1
secondActivity.java代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
packagecom.example.caiquangame;
importandroid.os.Bundle;
importandroid.app.Activity;
importandroid.view.Menu;
importandroid.view.MenuItem;
importandroid.widget.TextView;
importandroid.widget.Toast;
importandroid.support.v4.app.NavUtils;
publicclasssecondActivity extendsActivity {
privateTextView tv;
@Override
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
setTitle("结果");
tv = (TextView)findViewById(R.id.show);
Bundle bundle = this.getIntent().getBundleExtra("result");
intplayerInt = bundle.getInt("player");
intcomputerInt = bundle.getInt("computer");
tv.setText("猜拳结果\n");
tv.append("您的选择:");
intChangeString(playerInt);
tv.append("电脑的选择:");
intChangeString(computerInt);
tv.append("结果:");  
if(playerInt == 0)
{
if(computerInt == 0)
{
tv.append("平局");
}
elseif(computerInt == 1)
{
tv.append("您是赢家");
}
else
{
tv.append("电脑是赢家");
}
}
elseif(playerInt == 1)
{
if(computerInt == 0)
{
tv.append("电脑是赢家");
}
elseif(computerInt == 1)
{
tv.append("平局");
}
else
{
tv.append("您是赢家");
}
}
else
{
if(computerInt == 0)  
{
tv.append("您是赢家");
}
elseif(computerInt == 1)
{
tv.append("电脑是赢家");
}
else
{
tv.append("平局");
}
}
}
privatevoidintChangeString(intn)
{
switch(n)
{
case0:
tv.append("石头\n");
break;
case1:
tv.append("剪刀\n");
break;
case2:
tv.append("布\n");
break;
default:
Toast.makeText(secondActivity.this, "错误", Toast.LENGTH_LONG).show();
break;
}
}
}



3. 屏幕1跳转到屏幕2,屏幕2执行结束后有返回值到屏幕1(带返回值跳转)

参考示例程序:ReceiveResult(ApiDemo => App=>Activity=>ReceiveResult)

重要代码:

//屏幕1调转到屏幕2

Intent intent = new Intent(Forward.this,ForwardTargetActivity.class);

startActivityForResult(intent, GET_CODE);


//在屏幕2设置返回值

setResult(RESULT_OK,(new Intent()).setAction("Violet!"));

finish();


//在屏幕1得到从屏幕2返回的内容

@Override

protected void onActivityResult(int RequestCode,int ResultCode,Intent data)

{

if(RequestCode == GET_CODE)

{

if(ResultCode == RESULT_CANCELED)

{

edit.append("canceled!");

}

else

{

edit.append("(okay ");

edit.append(Integer.toString(ResultCode));

edit.append(")");

}

if(data!=null)

{

edit.append(data.getAction());

}

}

edit.append("\n");

}