一、
显式跳转和隐式传递
Activity之间的数据传递
startActivityForResult:启动Activity,结束后返回结果
二、
主要用的就是下面所写的第一种显式跳转
public class AActivity extends AppCompatActivity {
private Button mBtnGotoB;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a);
mBtnGotoB = findViewById(R.id.btn_B);
mBtnGotoB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//显式跳转
//Intent intent = new Intent(AActivity.this,BActivity.class);
//startActivity(intent);
//显式跳转2
// Intent intent1 = new Intent();
// intent1.setClass(AActivity.this,BActivity.class);
// startActivity(intent1);
//显式跳转3
// Intent intent = new Intent();
// intent.setClassName(AActivity.this,"com.wangkangli.activitystudy.Jump.BActivity");
// startActivity(intent);
//显式跳转4
// Intent intent = new Intent();
// intent.setComponent(new ComponentName(AActivity.this,"com.wangkangli.activitystudy.Jump.BActivity"));
// startActivity(intent);
//!!隐式调用1
Intent intent = new Intent();
intent.setAction("lalala");
startActivity(intent);
}
});
//显式跳转
}
}
setAction用途还很多 eg调用系统控件比如电话 摄像头
在隐式跳转1中需要在manifest中更改BActivity
<activity android:name=".Jump.BActivity" android:label="B">
<intent-filter>
<action android:name="lalala" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
三、
数据传递在putExtras是通过Bundle传递
可以通过putExtras 传入Bundle传递,也可以通过putExtra传入基本数据类型进行传递
传输时
mBtnGotoB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(AActivity.this,BActivity.class);
//数据传递
// intent.putExtra();
Bundle bundle = new Bundle();
bundle.putString("name","wkl");
bundle.putInt("number",88);
intent.putExtras(bundle);
startActivity(intent); }
});
接收时
public class BActivity extends AppCompatActivity {
private TextView mTvtitle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
mTvtitle = findViewById(R.id.tv_title);
Bundle bundle = getIntent().getExtras();
String name = bundle.getString("name");
int number = bundle.getInt("number");
mTvtitle.setText(name+","+number);
}
}
三、接收返回的数据
startActivityForResult
首先设置Intent意图 在设置请求码
startActivityForResult(intent,0);//0为请求码
我在BActivity中设置button点击事件来返回
mBtnFinish.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
Bundle bundle1 = new Bundle();
bundle1.putString("title","i am back");
intent.putExtras(bundle1);
setResult(Activity.RESULT_OK,intent);
finish();
}
});
在A中用onActivityResult来接收
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Toast.makeText(AActivity.this,data.getExtras().getString("title"),Toast.LENGTH_SHORT).show();
}