| 知乎专栏 |
Button button = (Button) findViewById(R.id.writeButton);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
setContentView(R.layout.activity_write);
Intent intent = new Intent(MainActivity.this,WriteActivity.class);
startActivity(intent);
}
});
四种 Activity 切换方式
Intent intent = new Intent(MainActivity.this,HomeActivity.class);
startActivity(intent);
Intent intent = new Intent();
intent.setClass(MainActivity.this,HomeActivity.class);
startActivity(intent);
Intent intent = new Intent();
ComponentName componentName = new ComponentName(MainActivity.this,HomeActivity.class);
intent.setComponent(componentName);
startActivity(intent);
startActivity(new Intent(MainActivity.this,HomeActivity.class));
Intent intent = new Intent(Intent.ACTION_MAIN);
//前提:知道要跳转应用的包名、类名
ComponentName componentName = new ComponentName("cn.netkiller.album.hotel", "cn.netkiller.album.hotel.MainActivity");
intent.setComponent(componentName);
startActivity(intent);
// 定义跳转
ActivityResultLauncher<Intent> intentActivityResultLauncher =
registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
Intent data = result.getData();
if (result.getResultCode() == RESULT_OK && data != null) {
// 一些逻辑
}
});
// 使用时
Intent intent = new Intent(this,跳转到的.class);
// 执行跳转
intentActivityResultLauncher.launch(intent);
startActivityForResult 即将废弃
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
try {
startActivityForResult(takePictureIntent, 1);
} catch (ActivityNotFoundException e) {
// display error state to the user
}
}
替代方案是
//拍照
private final ActivityResultLauncher<Void> mLauncherCamera = registerForActivityResult(
new ActivityResultContracts.TakePicturePreview(), result -> {
//result为拍摄照片Bitmap格式
});
//开启拍照, 返回结果Bitmap
private void launchCamera() {
mLauncherCamera.launch(null);
}
package cn.netkiller;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class SubActivity extends Activity{
private TextView tv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.sub);
tv1 = (TextView)this.findViewById(R.id.tv1);
Intent intent = new Intent();
intent.putExtra("response", "返回码为200");
setResult(200,intent);
finish();
}
}
package cn.netkiller;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class IntentActivity extends Activity {
private Button btn1;
private TextView tv1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn1 = (Button)this.findViewById(R.id.brn1);
tv1 = (TextView)this.findViewById(R.id.tv2);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(IntentActivity.this, SubActivity.class);
startActivityForResult(intent, 100); //requestcode=100
}
});
}
//回调函数,会根据requesrCode进行不同的响应
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==100){
// TODO: 响应逻辑
}
if(resultCode==200){
Bundle bundle = data.getExtras();
String response = bundle.getString("response");
tv1.setText(response);
}
}
}