展会信息港展会大全

Android 几种屏幕间跳转的跳转Intent Bundle
来源:互联网   发布日期:2016-01-14 09:29:22   浏览:1487次  

导读:屏幕使用一个活动来实现,屏幕间是相互独立的,屏幕之间的跳转关系通过Intent来实现。屏幕间跳转分为以下几类:1. 屏幕1直接跳转到屏幕2 Intent intent = ne...

屏幕使用一个活动来实现,屏幕间是相互独立的,屏幕之间的跳转关系通过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");

猜拳游戏完整代码:

activity_first.xml代码

activity_second.xml代码

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);

}

}

secondActivity.java代码

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 = newIntent(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");

}

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港