您的位置:首页 > 移动开发 > Android开发

【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中的代码。

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调试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: