展会信息港展会大全

Android 程式开发:(二)使用意图 —— 2.4 使用Intent传递数据
来源:互联网   发布日期:2016-01-14 09:33:21   浏览:1779次  

导读:除了能从一个Activity返回数据结果之外,向一个Activity传递数据也是很常用的。 1.新建一个名为PassData的工程。 2.main.xml中的代码。嬀...

除了能从一个Activity返回数据结果之外,向一个Activity传递数据也是很常用的。

1.新建一个名为PassData的工程。

2.main.xml中的代码。

[java] view plaincopy<?xml version="1.0" encoding="utf-8"?>

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

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<Button

android:id="@+id/btn_SecondActivity"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:onClick="onClick"

android:text="Click to go to Second Activity" />

</LinearLayout>

3.在res/layout文件夹下,创建secondactivity.xml文件。[java] view plaincopy<?xml version="1.0" encoding="utf-8"?>

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

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Welcome to Second Activity" />

<Button

android:id="@+id/btn_MainActivity"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:onClick="onClick"

android:text="Click to return to main activity" />

</LinearLayout>

4.新建一个Activity子类:SecondActivity.java。[java] view plaincopypublic class SecondActivity extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.secondactivity);

// ---get the data passed in using getStringExtra()---

Toast.makeText(this, getIntent().getStringExtra("str1"),

Toast.LENGTH_SHORT).show();

// ---get the data passed in using getIntExtra()---

Toast.makeText(this,

Integer.toString(getIntent().getIntExtra("age1", 0)),

Toast.LENGTH_SHORT).show();

// ---get the Bundle object passed in---

Bundle bundle = getIntent().getExtras();

// ---get the data using the getString()---

Toast.makeText(this, bundle.getString("str2"), Toast.LENGTH_SHORT)

.show();

// ---get the data using the getInt() method---

Toast.makeText(this, Integer.toString(bundle.getInt("age2")),

Toast.LENGTH_SHORT).show();

}

public void onClick(View view) {

// ---use an Intent object to return data---

Intent i = new Intent();

// ---use the putExtra() method to return some

// value---

i.putExtra("age3", 45);

// ---use the setData() method to return some value---

i.setData(Uri.parse("Something passed back to main activity"));

// ---set the result with OK and the Intent object---

setResult(RESULT_OK, i);

// ---destroy the current activity---

finish();

}

}

5.AndroidManifest.xml中的代码。[java] view plaincopy<?xml version="1.0" encoding="utf-8"?>

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

package="net.horsttnann.PassingData"

android:versionCode="1"

android:versionName="1.0" >

<uses-sdk android:minSdkVersion="10" />

<application

android:icon="@drawable/ic_launcher"

android:label="@string/app_name" >

<activity

android:name=".PassingDataActivity"

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="net.horsttnann.PassingData.SecondActivity"

android:label="Second Activity" >

<intent-filter>

<action android:name="net.horsttnann.PassingDataSecondActivity" />

<category android:name="android.intent.category.DEFAULT" />

</intent-filter>

</activity>

</application>

</manifest>

6.PassDataActivity中的代码。

[java] view plaincopyprint?public class PassingDataActivity extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

}

public void onClick(View view) {

Intent i = new

Intent("net.learn2develop.PassingDataSecondActivity");

//---use putExtra() to add new key/value pairs---

i.putExtra("str1", "This is a string");

i.putExtra("age1", 25);

//---use a Bundle object to add new key/values

// pairs---

Bundle extras = new Bundle();

extras.putString("str2", "This is another string");

extras.putInt("age2", 35);

//---attach the Bundle object to the Intent object---

i.putExtras(extras);

//---start the activity to get a result back---

startActivityForResult(i, 1);

}

public void onActivityResult(int requestCode,

int resultCode, Intent data)

{

//---check if the request code is 1---

if (requestCode == 1) {

//---if the result is OK---

if (resultCode == RESULT_OK) {

//---get the result using getIntExtra()---

Toast.makeText(this, Integer.toString(

data.getIntExtra("age3", 0)),

Toast.LENGTH_SHORT).show();

//---get the result using getData()---

Toast.makeText(this, data.getData().toString(),

Toast.LENGTH_SHORT).show();

}

}

}

}

public class PassingDataActivity extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

}

public void onClick(View view) {

Intent i = new

Intent("net.learn2develop.PassingDataSecondActivity");

//---use putExtra() to add new key/value pairs---

i.putExtra("str1", "This is a string");

i.putExtra("age1", 25);

//---use a Bundle object to add new key/values

// pairs---

Bundle extras = new Bundle();

extras.putString("str2", "This is another string");

extras.putInt("age2", 35);

//---attach the Bundle object to the Intent object---

i.putExtras(extras);

//---start the activity to get a result back---

startActivityForResult(i, 1);

}

public void onActivityResult(int requestCode,

int resultCode, Intent data)

{

//---check if the request code is 1---

if (requestCode == 1) {

//---if the result is OK---

if (resultCode == RESULT_OK) {

//---get the result using getIntExtra()---

Toast.makeText(this, Integer.toString(

data.getIntExtra("age3", 0)),

Toast.LENGTH_SHORT).show();

//---get the result using getData()---

Toast.makeText(this, data.getData().toString(),

Toast.LENGTH_SHORT).show();

}

}

}

}

7.按F11调试。

效果图:

程序第一次启动:

跳转到SecondActivity:

返回PassDataActivity:

作者 manoel的专栏

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

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