Android Intent傳遞數據


剛開始看郭大神的<<第一行代碼>>,實現以下里面的一些例子.Intent傳遞數據.
我們利用顯示的方式進行Intent的啟動.

1.啟動intent並輸入數據.

Intent intent=new Intent(MainActivity.this,TwoActivity.class
					);
			intent.putExtra("data", "hello two");
			startActivity(intent);

2.接收數據.

Intent intent=getIntent();
		Log.i("data", intent.getStringExtra("data"));

注.intent傳遞數據的方式是鍵值對的形式,所以我們要根據預鍵來取.這里我們傳遞的是一個String字符串,當然你也可以傳遞其他數據類型.不過取的時候我們要根據數據類型來使用不同方法取.如下(當然還有很多,以此類推).

		intent.getIntExtra(name, defaultValue);
		intent.getBooleanExtra(name, defaultValue);

3.返回數據

Intent intent1=new Intent(MainActivity.this,TwoActivity.class
					);
			
			intent1.putExtra("data", "hello two");
			startActivityForResult(intent1, 1);

在這里我們使用的不是startActivity();而是startActivityForResult();,這是我們要返回數據,所以必須要一個用來識別返回數據的code.

Intent intent=getIntent();
		data=intent.getStringExtra("data");
		Log.i("data", data);
		findViewById(R.id.btn_twolayout).setOnClickListener(new OnClickListener(
				) {
			
			@Override
			public void onClick(View v) {
				Intent intent=new Intent();
				intent.putExtra("data1", data+"收到.");
				setResult(RESULT_OK, intent);
				finish();
			}
		});

接收並返回數據.setResult(RESULT_OK, intent);.然后我們使用finish();將當前的activity銷毀掉,返回上一個activity.

@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if (requestCode==1) {
			if (resultCode == RESULT_OK) {
				Log.i("data1", data.getStringExtra("data1"));
			}
		}
		super.onActivityResult(requestCode, resultCode, data);
	}

最后我們重寫onActivityResult();方法,並判斷requestCode是否等於我們預先設定好的code,和resultCode是否等於RESULT_OK.


在onActivityResult();方法里帶有三個參數,分別是requestCode,我們在啟動活動時傳入的請求碼.resultCode,我們在返回數據時候傳入的處理結果.data,攜帶着返回數據的intent.

此外我們還有一個問題,如果我們不是通過預先設定好的按鈕返回上一個activity,而是通過back按鍵返回怎么辦?

@Override
	public void onBackPressed() {
		Intent intent=new Intent();
		intent.putExtra("data1", data+"收到.");
		setResult(RESULT_OK, intent);
		finish();
	}

這個時候我們可以通過重寫onBackPressed(); 方法來解決.這樣的話當我們按下back按鍵,就會去執行onBackPressed();方法中的代碼.
么么噠的效果圖 o.o


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM