34.activity携带数据显示跳转

来源:互联网 发布:部落地震法术数据 编辑:程序博客网 时间:2024/06/09 16:51

隐式传递数据通常使用intent.setData(Uri.parse("ldw:canshu"))携带参数。

显示传递数据有2种携带数据的方法一种是intent,另一种是bundle携带参数。

intent方式:

intent方式携带参数:

    //数据封装到intent中,前面是参数名后面是参数的值name-value的形式    intent.putExtra("name1", "A");    intent.putExtra("name2", "B");
intent方式获取参数:

//从intent对象中取出封装好的数据String name1 = intent.getStringExtra("name1");String name2 = intent.getStringExtra("name2");

bundle方式:

bundle方式携带参数:

    //把数据封装到bundle对象中,bundle是以keyvalue的形式传递数据    Bundle bundle = new Bundle();    bundle.putString("name1", "A");    bundle.putString("name2", "B");    //把bundle对象封装到intent对象中    intent.putExtras(bundle);
bundle方式获取参数:

Bundle bundle = intent.getExtras();String name1 = bundle.getString("name1");String name2 = bundle.getString("name2");

显示跳转需要配置清单文件,这里面我们准备跳转到SecondActivity

<activity android:name="com.ldw.lifecycle.SecondActivity"/>

第一个activity的代码如下:

activity_main.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:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity"     android:orientation="vertical"    >    <TextView         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="这个是测算"        />    <EditText         android:id="@+id/name1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="A"        />    <EditText         android:id="@+id/name2"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="B"        />    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="跳转"         android:onClick="click"        /></LinearLayout>
MainActivity.java

package com.ldw.lifecycle;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.EditText;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        System.out.println("第一个onCreate方法调用");    }    public void click(View v){        Intent intent = new Intent(this,SecondActivity.class);    //数据封装到intent中,前面是参数名后面是参数的值    intent.putExtra("name1", "A");    intent.putExtra("name2", "B");    startActivity(intent);    } }

第二个activity的代码如下:
activity_second.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >        <TextView         android:id="@+id/res"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        />    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="跳转到第一个activity"         android:onClick="click1"        /></LinearLayout>
SecondActivity.java

package com.ldw.lifecycle;import java.util.Random;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.TextView;public class SecondActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);Intent intent = getIntent();//从intent对象中取出封装好的数据String name1 = intent.getStringExtra("name1");String name2 = intent.getStringExtra("name2");Random rd = new Random();int result = rd.nextInt(100);TextView res = (TextView) findViewById(R.id.res);res.setText(name1 + "和" + name2 + "的测试结果是" +result);}}


使用bundle传递数据的时候,代码如下,布局文件不需要更改

MainActivity.java

package com.ldw.lifecycle;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        System.out.println("第一个onCreate方法调用");    }    public void click(View v){        Intent intent = new Intent(this,SecondActivity.class);    //数据封装到intent中,前面是参数名后面是参数的值name-value的形式    //intent.putExtra("name1", "A");    //intent.putExtra("name2", "B");        //把数据封装到bundle对象中,bundle是以keyvalue的形式传递数据    Bundle bundle = new Bundle();    bundle.putString("name1", "A");    bundle.putString("name2", "B");    //把bundle对象封装到intent对象中    intent.putExtras(bundle);        startActivity(intent);    } }

SecondActivity.java

package com.ldw.lifecycle;import java.util.Random;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.widget.TextView;public class SecondActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);Intent intent = getIntent();//从intent对象中取出封装好的数据//String name1 = intent.getStringExtra("name1");//String name2 = intent.getStringExtra("name2");Bundle bundle = intent.getExtras();String name1 = bundle.getString("name1");String name2 = bundle.getString("name2");Random rd = new Random();int result = rd.nextInt(100);TextView res = (TextView) findViewById(R.id.res);res.setText(name1 + "和" + name2 + "的测试结果是" +result);}}



0 0
原创粉丝点击