知乎专栏 |
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));
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); } });
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); } } }