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