Android笔记:Activity之带值传递

   Activty之间的传递数据

之前学习过如何启动一个activity,在一些场合不单需要启动另一个activity,还需要得到返回的结果.而且有些时候更经常的操作时启动另一个activity时带上一些值.

1.定义一个Intent,并为该Intent指定即将被启动的Activity  
    2.调用startActivityForResult(Intent intent,int requestCode)跳转并标记requestCode
    3.重写onActivityResult(int requestCode,int resultCode,intent data)解析返回的数据
    4.在另一个Activity中调用setResult(RESULT_OK,backintent)
    Note:在Activity之间传递数据
         Bundle:一个类型安全的容器,只能存储基本数据类型或基本类型的数组,如string,int,byte和boolean等

代码:

activity_main.xml:

<RelativeLayout 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"
    tools:context="${relativePackage}.${activityClass}" >

    <Button
        android:text="下一步"
        android:id="@+id/Next"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        >

    </Button>
</RelativeLayout>
MainActivity.java:
package com.YZR.activtydatapass;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
    final int NEXT=0x1010;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn=(Button)findViewById(R.id.Next);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent nextIntent=new Intent(MainActivity.this,NextActivity.class);
                Bundle bundle=new Bundle();
                bundle.putString("性别", "MAN");
                bundle.putString("姓名", "YZR");
                nextIntent.putExtras(bundle);
                startActivityForResult(nextIntent, NEXT);
            }
        });
    }
    @Override
    protected void onActivityResult(int requestCode,int resultCode,Intent data)
    {

        if(resultCode==RESULT_OK && requestCode== NEXT)
        {

            Bundle bundle=data.getExtras();
            int age=bundle.getInt("年龄");
            String work=bundle.getString("职业");
            setTitle("Age:"+age+",Work:"+work);
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
}

activity_next.xml:

<RelativeLayout 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"
    tools:context="${relativePackage}.${activityClass}" >

<Button
        android:text="返回"
        android:id="@+id/Back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        >

    </Button>
</RelativeLayout>
NextActivity.java:
package com.YZR.activtydatapass;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class NextActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_next);
        Bundle bundle=getIntent().getExtras();
        String name=bundle.getString("姓名");
        String Sex=bundle.getString("性别");
        setTitle("姓名:"+name+",性别:"+Sex);
        Button btn=(Button)findViewById(R.id.Back);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent backIntent=new Intent();
                Bundle bundle=new Bundle();
                bundle.putInt("年龄", 25);
                bundle.putString("职业", "IT");
                backIntent.putExtras(bundle);
                setResult(RESULT_OK,backIntent);
                finish();
            }
        });
    }
}

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.YZR.activtydatapass"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".NextActivity"
            android:label="@string/title_activity_next" >
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>

</manifest>

   

以上仅供于学习<Android系统应用开发实战详解>

END

时间: 2024-10-10 07:26:38

Android笔记:Activity之带值传递的相关文章

自学Android笔记——Activity中的数据传递案例(用户注册)

1.创建程序activity_main: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Line

Android笔记——Activity中的数据传递案例(用户注冊)

1.创建程序activity_main: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Line

(Android review)Activity之间的数据传递

一.基本知识点 1.Activity之间传递数据1)传递基本类型或String intent.putExtra("username", username);  getIntent(); intent.getStringExtra("username"); 2)以bundle的形式传 Bundle bundle = new Bundle();    bundle.putString("username", username);    bundle.

显式意图,隐式意图。。带值传递意图

显式意图1 显式意图2 带值传递意图1 带值传递意图2 隐式意图1 隐式意图2

Android笔记——Activity中的回传数据案例(装备选择)

1.创建程序: <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" tools:conte

自学Android笔记——Activity中的回传数据案例(装备选择)

1.创建程序: <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" tools:conte

Android笔记:Activity

1.Android可视化界面结构:    一个Android应用的可视化界面最底层是Activity,在他之上是一个Window对象,在window之上通常是布局容器,再上面才是用户直接交互的组件(按钮,文本框) 交互组件(UI控件)-->布局容器(layout)--->Window对象--->Activity2.Activity生命周期    Activity是以栈的形式管理的,当前活动的Activity位于栈顶,其他的Activity则处于非活动状态.        Activiy生

Android中Activity之间的数据传递ngti

在开发中,我们经常涌用到Activity,那么既然用到了Activity,就一定免不了在两个Activity之间传递数据.这里我们先说一说原理,在看看代码和例子. 情况A:我们需要从Activity_1启动并传递数据到Activity_2,Activity_2只需要接收来自Activity_1 的数据,但并不用做其他操作. 情况B:我们需要从Activity_1 启动Activity_2,同时希望Activity_2在销毁的时候向Activity_1传递数据. 首先我们来说一说情况A. 情况A是

玩转Android之Activity详细剖析

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文主讲了什么是Activity,它的生命周期,不对的操作,调用了什么函数.以及不同的Activity之间的跳转.数据传递等. Activity 是用户接口程序,原则上它会提供给用户一个交互式的接口功能.它是 android 应用程序的基本功能单元.Activity 本身是没有界面的.所以activity类创建了一个窗口,开发人员可以通过setContentView(View)接口把UI放到