Fork me on GitHub

Activity之间传递参数(一)

-------siwuxie095

   

   

   

传递简单数据

   

1)首先创建一个项目:SendArgs

   

   

   

(2)选择API:21 Android 5.0

   

   

3)选择 Empty Activity

   

   

   

(4)默认

   

   

5)完成,一览:

   

   

   

6)先进 activity_main.xml 里的 Text 手动添加一个Button,

删掉自带的TextView,如下:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/activity_main"

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="com.siwuxie095.sendargs.MainActivity">

   

   

   

<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/btnStartAty"

android:text="启动另一个Activity"/>

   

</RelativeLayout>

   

7new 一个 Empty Activity:TheAty

   

   

   

   

   

   

   

(8)给activity_the_aty.xml添加一个TextView,如下:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/activity_the_aty"

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="com.siwuxie095.sendargs.TheAty">

   

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Hello World"

android:id="@+id/tv"/>

   

</RelativeLayout>

   

9)在MainActivity.java 中添加:findViewById(R.id.btnStartAty)

和setOnClickListener(new OnClick…),会自动生成代码,接着在onClick()

函数里创建一个Intent,通过 Intent 的 putExtra() 传参,最后通过 startActivity()

把Intent对象传入:

package com.siwuxie095.sendargs;

   

import android.content.Intent;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

   

public class MainActivity extends AppCompatActivity {

   

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

   

findViewById(R.id.btnStartAty).setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//创建一个new Intent()实例,传入ContextClass类型的参数

//对应MainActivity.this 被启动的Activity的类定义 TheAty.class

Intent i = new Intent(MainActivity.this,TheAty.class);

//通过Intent对象,调用putExtra()方法,传参

//这里传入StringString类型的参数,实际上就是键值对

i.putExtra("data","你好 我是传递的参数");

//传入i

startActivity(i);

}

});

}

}

   

   

(10)在 TheAty.java 中获取数据,如下:

package com.siwuxie095.sendargs;

   

import android.content.Intent;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.widget.TextView;

   

public class TheAty extends AppCompatActivity {

   

   

private TextView tv;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_the_aty);

   

//TheAty是通过MainActivity中的Intent启动,直接通过getIntent()方法

//获取与这个Activity相关的Intent

Intent i=getIntent();

   

//要访问TextView,先在上面声明

//findViewById()的返回值在编译时只能查看到类型是View,而事实上是TextView类型

//需要强制类型转换

tv= (TextView) findViewById(R.id.tv);

//调用setText()方法设置字符串,这里字符串通过Intent获取

tv.setText(i.getStringExtra("data"));

   

}

}

   

   

(11)发送到手机,运行一览:

   

   

   

   

   

【made by siwuxie095】

   

   

   

   

   

posted on 2016-12-29 20:00  siwuxie095  阅读(448)  评论(0编辑  收藏  举报

导航