一、用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);