Activity之間的跳轉和資料傳遞
阿新 • • 發佈:2021-01-18
目錄
1、按鈕點選跳轉頁面
mBtn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//顯式跳轉1——首選
Intent intent1 = new Intent(MainActivity.this, loadActivity.class);
startActivity( intent1);
//顯式跳轉2
Intent intent2 = new Intent();
intent2.setClass(MainActivity.this, loadActivity.class);
startActivity(intent2);
//顯式跳轉3
Intent intent3 = new Intent();
intent3.setClassName( MainActivity.this, "com.gxw.myappf.loadActivity");
startActivity(intent3);
//顯式跳轉4
Intent intent4 = new Intent();
intent4.setComponent(new ComponentName(MainActivity.this, "com.gxw.myappf.loadActivity"));
startActivity( intent4);
//隱式跳轉(需做下框中設定)
Intent intent5 = new Intent();
intent5.setAction("android.gxw.jumpyin");
startActivity(intent5);
}
});
# activity_main.xml
<activity android:name=".loadActivity"
android:theme="@style/Theme.NoTitleBar.CustomBackground"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.gxw.jumpyin" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
2、資料傳遞
點選按鈕跳轉並傳遞引數
mBtn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//跳轉並傳遞引數
Intent intent = new Intent(MainActivity.this, loadActivity.class);
Bundle bundle = new Bundle(); //可傳多個引數
bundle.putString("name","123");
bundle.putInt("id",'5');
intent.putExtra("data", bundle);
startActivity(intent);
}
});
接收引數並返回引數
private TextView mTv1;
private Button mbtn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_text_view);
mTv1 = findViewById(R.id.tv_4); //找到控制元件
mbtn1 = findViewById(R.id.bt_1); //找到控制元件
Bundle bundle = getIntent().getExtras(); //獲取傳遞的引數
String name = bundle.getString("name");
int id = bundle.getInt("id");
mTv1.setText(name + ',' + id);
//返回引數
mbtn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent1 = new Intent();
Bundle bundle1 = new Bundle();
bundle1.putString("data","back");
intent1.putExtras(bundle1);
setResult(TextViewActivity.RESULT_OK,intent1);設定返回結果
finish();//結束本頁面
}
});
}
在原頁面中新增函式用於接收返回的資料
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Toast.makeText(MainActivity.this, data.getExtras().getString("data"),Toast.LENGTH_LONG).show();
}