Android 幾種屏幕間跳轉的跳轉Intent Bundle

屏幕使用一個活動來實現,屏幕間是相互獨立的,屏幕之間的跳轉關係通過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="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");

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章