Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android學習筆記(十二)——使用意圖傳遞數據的幾種方式

Android學習筆記(十二)——使用意圖傳遞數據的幾種方式

編輯:關於Android編程

使用意圖傳遞數據的幾種方式


點此獲取完整代碼


我們除了要從活動返回數據,也常常要傳遞數據給活動。對此我們可以使用Intent對象將這些數據傳遞給目標活動。


1、創建一個名為PassingData的項目,在activity_main.xml文件中添加一個Button:

    

2、在res/layout文件夾中添加一個新的secondactivity.xml文件,添加TextView和Button:

    

    

3、在當前包中新建一個Class,命名為SecondActivity,在SecondActivity.java中添加如下代碼:

package com.example.passingdata;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class SecondActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.secondactivity);
		// 為了獲得通過Intent對象發送的數據,先使用getIntent()方法獲取Intent對象,
		// 再調用該對象的getStringExtra()方法來獲得使用putExtra()方法設置的字符串值
		Toast.makeText(this, getIntent().getStringExtra("str1"),
				Toast.LENGTH_SHORT).show();
		// 同上,對於整數值,調用getIntExtra()方法(注意,如果該名稱沒有存儲值,則會使用默認值,在此為0)
		Toast.makeText(this,
				Integer.toString(getIntent().getIntExtra("age1", 0)),
				Toast.LENGTH_SHORT).show();
		// 獲取Bundle對象,要使用getExtras()方法:對於字符串值,使用getString();對於整數值,使用getInt()
		Bundle bundle = getIntent().getExtras();
		Toast.makeText(this, bundle.getString("str2"), Toast.LENGTH_SHORT)
				.show();
		Toast.makeText(this, Integer.toString(bundle.getInt("age2")),
				Toast.LENGTH_SHORT).show();
	}

	public void onClick(View v) {
		Intent intent = new Intent();
		intent.putExtra("age3", 45);
		// 回傳可以使用setData()方法(上一篇中講過)
		intent.setData(Uri.parse("Something passed back to main activity"));
		// 設置Intent和結果碼
		setResult(RESULT_OK, intent);
		// 關閉活動
		finish();
	}
}

4、在AndroidManifest.xml文件中添加如下代碼:

        
            
                

                
            
        

5、在MainActivity.java文件中添加如下代碼:

	public void onClick(View view) {
		Intent intent = new Intent("net.zenail.PassingData.SecondActivity");
		// 法一:使用putExtra()方法為Intent對象添加了兩個鍵/值對:String和integer類型
		intent.putExtra("str1", "This is a string");
		intent.putExtra("age1", 25);

		// 法二:創建Bundle對象,向其添加兩個鍵/值對,再使用putExtras添加給Intent對象
		Bundle extras = new Bundle();
		extras.putString("str2", "This is another string");
		extras.putInt("age2", 35);
		intent.putExtras(extras);

		// 啟動活動並設置1為請求碼
		startActivityForResult(intent, 1);
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		super.onActivityResult(requestCode, resultCode, data);
		if (requestCode == 1) {
			if (resultCode == RESULT_OK) {
				// 用getIntExtra()獲取用putExtra()設置的整數值
				Toast.makeText(this,
						Integer.toString(data.getIntExtra("age3", 0)),
						Toast.LENGTH_SHORT).show();

				// 用getData()獲取用setData()設置的字符串值
				Toast.makeText(this, data.getData().toString(),
						Toast.LENGTH_SHORT).show();
			}
		}
	}

6、運行,效果如下:

點擊按鈕:

\

出現如下畫面:

\

\

\

\

消息框消失,點擊按鈕,出現如下畫面:<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGltZyBzcmM9"/uploadfile/Collfiles/20140508/2014050808305313.jpg" alt="\">



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved