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

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

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

Intent intent = new Intent();

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

startActivity(intent);

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

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

使用Bundle来传参数。

例子:猜拳游戏

界面:

\\

重要代码:

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

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=
""
xmlns: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=
""
xmlns: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代码
package
com.example.caiquangame;
import
java.util.Random;
import
android.os.Bundle;
import
android.app.Activity;
import
android.content.Intent;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
import
android.widget.RadioGroup;
import
android.widget.Toast;
import
android.support.v4.app.NavUtils;
public
class
firstActivity
extends
Activity {
private
Button chuquan;
private
RadioGroup quans;
private
int
player;
@Override
public
void
onCreate(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);
}
private
OnClickListener mChuQuanListener =
new
OnClickListener()
{
@Override
public
void
onClick(View arg0) {
// TODO Auto-generated method stub
switch
(quans.getCheckedRadioButtonId())
{
case
R.id.shitou:
player =
0
;
break
;
case
R.id.jiandao:
player =
1
;
break
;
case
R.id.bu:
player =
2
;
break
;
default
:
Toast.makeText(firstActivity.
this
,
"请选择"
, Toast.LENGTH_LONG).show();
break
;
}
//将的到的值传给secondActivity
skip();
}
};
private
void
skip()
{
Intent intent =
new
Intent();
intent.setClass(firstActivity.
this
, secondActivity.
class
);
Bundle bundle =
new
Bundle();
bundle.putInt(
"player"
, player);
bundle.putInt(
"computer"
,
new
Random().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
package
com.example.caiquangame;
import
android.os.Bundle;
import
android.app.Activity;
import
android.view.Menu;
import
android.view.MenuItem;
import
android.widget.TextView;
import
android.widget.Toast;
import
android.support.v4.app.NavUtils;
public
class
secondActivity
extends
Activity {
private
TextView tv;
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
setTitle(
"结果"
);
tv = (TextView)findViewById(R.id.show);
Bundle bundle =
this
.getIntent().getBundleExtra(
"result"
);
int
playerInt = bundle.getInt(
"player"
);
int
computerInt = bundle.getInt(
"computer"
);
tv.setText(
"猜拳结果\n"
);
tv.append(
"您的选择:"
);
intChangeString(playerInt);
tv.append(
"电脑的选择:"
);
intChangeString(computerInt);
tv.append(
"结果:"
);  
if
(playerInt ==
0
)
{
if
(computerInt ==
0
)
{
tv.append(
"平局"
);
}
else
if
(computerInt ==
1
)
{
tv.append(
"您是赢家"
);
}
else
{
tv.append(
"电脑是赢家"
);
}
}
else
if
(playerInt ==
1
)
{
if
(computerInt ==
0
)
{
tv.append(
"电脑是赢家"
);
}
else
if
(computerInt ==
1
)
{
tv.append(
"平局"
);
}
else
{
tv.append(
"您是赢家"
);
}
}
else
{
if
(computerInt ==
0
)  
{
tv.append(
"您是赢家"
);
}
else
if
(computerInt ==
1
)
{
tv.append(
"电脑是赢家"
);
}
else
{
tv.append(
"平局"
);
}
}
}
private
void
intChangeString(
int
n)
{
switch
(n)
{
case
0
:
tv.append(
"石头\n"
);
break
;
case
1
:
tv.append(
"剪刀\n"
);
break
;
case
2
:
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");

}