Activity與Intent

一、用intent打開新窗口

Intent(content1, content2)

content1:原窗口

content2:跳轉的目的窗口

//用intent打開新窗口
public void onCreate(Bundle savedInstanceState)
{
	super.onCreate(savedInstanceState);
	setContentView(R.layout.main);
	Button btn = (Button)findViewById(R.id.btn);

	btn.setOnClickListener(new OnClickListener(){
		@Override
		public void onClick(View source){
			Intent intent = new Intent(MainActivity.this, SecondActivity.class);
			startActivity(intent);
		}
	});
}

二、用bundle在窗口間傳遞數據

//用bundle傳遞數據
public void onCreate(Bundle savedInstanceState)
{
	super.onCreate(savedInstanceState);
	setContentView(R.layout.main);
	Button btn = (Button)findViewById(R.id.btn);

	btn.setOnClickListener(new OnClickListener(){
		@Override
		public void onClick(View source){
			Intent intent = new Intent(MainActivity.this, SecondActivity.class);
			Bundle data = new Bundle();
		     data.putString("str", "test");
		     intent.putExtras(data);
			startActivity(intent);
		}
	}
}

獲取數據

Intent intent = getIntent();
Bundle data = intent.getExtras();
String str = (String)data.getString("str");

三、用startActivityForResult打開窗口


step 01 在原窗口的onCreate方法中用startActivityForResult方法打開窗口,替換原來的startActivity函數。

startActivityForResult(Intent intent, int requestCode) : requestCode->請求碼,用於認證

startActivityForResult(intent, 0);

step 02 重寫原窗口的OnActivityResult方法
OnActivityResult(int requestCode, int resultCode, Intent intent)
requestCode->請求碼
resultCode->返回碼
intent->目標窗口的intent返回

@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent){
	if(requestCode == 0 && resultCode == 0){
		Bundle data = intent.getExtras();
		Type temp = data.getType(key);
		...
	}
}

step 03 目標窗口代碼

Intent intent = getIntent();
Bundle data = new Bundle();
data.putType(key, sth);
intent.putExtras(data);
DestActivity.this.setResult(0, intent);
DestActivity.this.finish();

四、利用Intent-filter

step 01 設置Manifest.xml文件

在被調用窗口的activity聲明中設置intent-filter

<activity android:name=".SecondActivity"
	android:lable="被調用的窗口">
	<intent-filter>
		<action andriod:name="com.will.intent.action.Test" />
		<category android:name="android.intent.category.DEFAULT" />
	</intent-filter>
</activity>

step 02 在主窗口中調用被調窗口

Intent intent = new Intent();
intent.setAction("com.will.intent.action.Test");
intent.addCategory("android.intent.category.DEFAULT");
startActivity(intent);












發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章