Jetpack Compose中的页面跳转和传值和之前没什么不同。
要注意的是
组件内尽量不要进行页面的跳转,组件可以设置回调方法,在Activity中进行页面跳转操作。
val intent = Intent(baseContext, AppDetailActivity::class.java)
startActivity(intent)
这里要注意的是,获取上下文使用的是baseContext
。
intent.putExtra(String name, boolean value);
intent.putExtra(String name, byte value);
intent.putExtra(String name, char value);
intent.putExtra(String name, short value);
intent.putExtra(String name, int value);
intent.putExtra(String name, float value);
intent.putExtra(String name, long value);
intent.putExtra(String name, double value);
intent.putExtra(String name, String value);
intent.putExtra(String name, int[] value);
intent.putExtra(String name, Parcelable value);
intent.putExtra(String name, Serializable value);
intent.putExtra(String name, CharSequence value);
intent.putStringArrayListExtra(String name, ArrayList<String> value);
取值
Intent intent = getIntent();
boolean bool = intent.getBooleanExtra(String name, boolean defaultValue);
byte bt = intent.getByteExtra(String name, byte defaultValue);
char ch = intent.getCharExtra(String name, char defaultValue);
short sh = intent.getShortExtra(String name, short defaultValue);
int i = intent.getIntExtra(String name, int defaultValue);
float fl = intent.getFloatExtra(String name, float defaultValue);
long lg = intent.getLongExtra(String name, long defaultValue);
double db = intent.getDoubleExtra(String name, double defaultValue);
String str = intent.getStringExtra(String name)
intent.putExtra(String name, String value);
获取
String str = intent.getStringExtra(String name)
注意
需要API33及以上版本。
在 Android 中,可以通过 Intent 来传递自定义对象,前提是该对象必须实现 Serializable接口。
Serializable接口允许对象在不同组件间进行序列化和反序列化,以便通过 Intent 进行传递。
public class Student implements Serializable{
private static final long serialVersionUID = 1L;
public String name;
public int age;
}
kotlin
import java.io.Serializable
data class CustomObject(val name: String, val age: Int) : Serializable
传递方法就是:
intent.putExtra(String name, Serializable value);
intent.getSerializableExtra(String name);
获取
intent.getSerializableExtra("appModel",Student::class.java)
object CommonData {
var appModel: AppModel? = null
}
onBackPressedDispatcher.onBackPressed()