【Android 开发教程】使用Intent传递数据
2012-05-17 17:33
801 查看
本章节翻译自《Beginning-Android-4-Application-Development》,如有翻译不当的地方,敬请指出。
原书购买地址http://www.amazon.com/Beginning-Android-4-Application-Development/dp/1118199545/
除了能从一个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.manoel.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中的代码。
原书购买地址http://www.amazon.com/Beginning-Android-4-Application-Development/dp/1118199545/
除了能从一个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.manoel.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中的代码。
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.manoel.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调试。
相关文章推荐
- Android开发之使用Intent在Activity之间传递数据
- Android 开发中使用Intent传递数据的方法
- Android 开发中使用Intent传递数据的方法
- Android 开发中使用Intent传递数据的方法
- Android 开发中使用Intent传递数据的方法
- Android 开发中使用Intent传递数据的方法
- android 开发手记 activity 之间数据的传递 intent 对象的使用
- android开发案例之使用JSON数据向服务器提交和获取服务器传递的Json数据
- Android开发经验之intent传递大数据
- android开发案例之使用JSON数据向服务器提交和获取服务器传递的Json数据
- android开发案例之使用JSON数据向服务器提交和获取服务器传递的Json数据
- android开发 -- 利用intent来传递int数据
- Android使用intent、bundle传递数据
- Android开发之使用Intent传递对象
- android开发案例之使用JSON数据向服务器提交和获取服务器传递的Json数据
- android中使用Intent在activity之间传递数据
- 【Android 开发教程】使用Intent发送短信
- Android开发经验之—intent传递大数据
- android 使用Intent传递数据之剪切板
- android 使用Intent传递数据之静态变量