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

猜拳游戏完整代码:

activity_first.xml代码 


代码如下:

<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="布" />
    </RadioGroup>

<Button
        android:id="@+id/chuquan"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="20dip"
        android:text="出拳" />

</LinearLayout>

activity_second.xml代码


代码如下:

<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" />

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

}

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

}

(0)

相关推荐

  • android教程之intent的action属性使用示例(intent发短信)

    Action :规定了Intent要完成的动作,是一个字符串常量.使用setAction()来设置Action属性,使用getAction()来获得Action属性.既可以使用系统内置的Action,也可以自己定义.系统自定义的action,如ACTION_VIEW, ACTION_EDIT, ACTION_MAIN等等. 1.自定义Action 在"目的Activity"的AndroidManifest.xml中指定action常量. 复制代码 代码如下: <activity

  • 详解Android中Intent的使用方法

    一.Intent的用途 Intent主要有以下几种重要用途: 1. 启动Activity:可以将Intent对象传递给startActivity()方法或startActivityForResult()方法以启动一个Activity,该Intent对象包含了要启动的Activity的信息及其他必要的数据. 2. 启动Service:可以将Intent对象传递给startService()方法或bindService()方法以启动一个Service,该Intent对象包含了要启动的Service的

  • Android中使用IntentService创建后台服务实例

    IntentService提供了在单个后台线程运行操作的简单结构.这允许它操作耗时操作,而不影响UI响应.同样,IntentService也不影响UI生命周期事件,所以,它在某些可能关闭AsyncTask的情况下,仍会继续运行(实测在Activity的onDestory里写AsyncTask无法运行). IntentService有如下限制: 1.它不能直接影响UI.要把结果反映给UI,需要发给Activity 2.工作请求会顺序运行.如果一个操作未结束,后面发送的操作必须等它结束(单线程) 3

  • Android编程中Intent实现页面跳转功能详解

    本文实例讲述了Android编程中Intent实现页面跳转功能.分享给大家供大家参考,具体如下: 安卓四大组件:Activity.Service.Broadcast Receiver.Content Provider Intent实现页面之间跳转 1.无返回值 startActivity(intent) 2.有返回值 startActivityForResult(intent,requestCode); onActivityResult(int requestCode,int resultCod

  • android中Intent传值与Bundle传值的区别详解

    举个例子我现在要从A界面跳转到B界面或者C界面   这样的话 我就需要写2个Intent如果你还要涉及的传值的话 你的Intent就要写两遍添加值的方法 那么 如果我用1个Bundle  直接把值先存里边 然后再存到Intent中 不就更简洁吗? 另外一个例子如果我现在有Activity A ,B ,C:现在我要把值通过A经过B传给C你怎么传 如果用Intent的话 A-B先写一遍 再在B中都取出来 然后在把值塞到Intent中 再跳到C 累吗?如果我在A中用了 Bundle 的话  我把Bun

  • Android 广播大全 Intent Action 事件详解

    具体内容如下所示: Intent.ACTION_AIRPLANE_MODE_CHANGED; //关闭或打开飞行模式时的广播 Intent.ACTION_BATTERY_CHANGED; //充电状态,或者电池的电量发生变化 //电池的充电状态.电荷级别改变,不能通过组建声明接收这个广播,只有通过Context.registerReceiver()注册 Intent.ACTION_BATTERY_LOW; //表示电池电量低 Intent.ACTION_BATTERY_OKAY; //表示电池电

  • android中intent传递list或者对象的方法

    本文实例讲述了android中intent传递list或者对象的方法.分享给大家供大家参考.具体实现方法如下: 方法一: 如果单纯的传递List<String> 或者List<Integer>的话 就可以直接使用 代码如下: 复制代码 代码如下: intent.putStringArrayListExtra(name, value)  intent.putIntegerArrayListExtra(name, value) 方法二: 如果传递的是List<Object>

  • Android Intent启动别的应用实现方法

    我们知道Intent的应用,可以启动别一个Activity,那么是否可以启动别外的一个应用程序呢,答案是可以的. 1.首先我们新建一个Android应用,名为AnotherPro,此应用什么内容都没有,用于被另外一个程序打开. 2.新建一个工程用于打开上面的应用,程序界面如下 3.修改程序代码,在onCreate中添加如下代码 anotherPro = (Button) findViewById(R.id.startAnotherPro);calendar = (Button) findView

  • Android Activity中使用Intent实现页面跳转与参数传递的方法

    本文实例讲述了Android Activity中使用Intent实现页面跳转与参数传递的方法.分享给大家供大家参考,具体如下: 新建一个FirstAvtivity.java package com.zhuguangwei; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.O

  • Android系列之Intent传递对象的几种实例方法

    在Android中intent传递对象主要有2种方式分别是,Bundle.putSerializable(Key,Object)和Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口,以下是我为大家做的一个实例 首先我们建立一个工程项目命名为:ObjectTestDemo 然后我们再修改main.xml布局文件,主要增加2个按钮view plaincopy to

  • Android Intent的几种用法详细解析

    Intent应该算是Android中特有的东西.你可以在Intent中指定程序要执行的动作(比如:view,edit,dial),以及程序执行到该动作时所需要的资料.都指定好后,只要调用startActivity(),Android系统会自动寻找最符合你指定要求的应用程序,并执行该程序. 下面列出几种Intent的用法显示网页: 复制代码 代码如下: Uri uri = Uri.parse("http://www.google.com");Intent it  = new Intent

随机推荐