android - Android Kotlin - 无法理解如何在 sdk 库(包含活动)中传递值
问题描述
我对如何将值传递给库中的活动感到头疼。
我创建了一个包含活动的库(让我们调用该活动 ShowEmailActivity)。
在 ShowEmailActivity 中,我有一个名为 email 的字符串类型变量和一个名为 setEmail 的函数,该函数将字符串作为参数。
(例如:fun setEmail(email:String){this.email=email})
我想要做的是将此电子邮件显示为我的 xml 中的文本视图(这并不难,我知道该怎么做)
当我添加我的库作为文件的模块依赖 -> 项目结构 -> 依赖项(然后我选择我的主应用程序) -> + 模块依赖 一切正常。
我什至可以从我的应用程序中的 MainActivity 调用 ShowEmailActivity。
但是,我想做的是从 ShowEmailActivity 调用 setEmail 函数,以便我可以从 MainActivity 设置我的电子邮件。
我想做的是在我的 MainActivity 类中创建该类的一个对象:
val showEmailActivity = ShowEmailActivity()
showEmailActivity.setEmail(myEmail)
但是,当我打开一个打开 ShowEmailActivity 的意图时,什么也没有发生。
我显然做错了什么,有人可以提出任何建议吗?
谢谢你。
解决方案
您正在尝试实例化一个Activity
并且这不起作用,因为这是由 Android 系统本身完成的
因此,如果您需要在创建 Activity 后立即调用特定方法sendEmail
,或者在 Java 术语中创建实例并具有参数 as myEmail
,则可以使用onCreate
Activity 的方法
让我添加一些示例代码来帮助您处理您的案例
假设我们有你的活动ShowEmailActivity
,首先我们会做一个开始活动的意图,我们也会myEmail
作为Bundle
参数传递
Intent intent = new Intent(this, ShowEmailActivity.class);
Bundle bundle = new Bundle();
bundle.putString("email_extra",myEmail); // Here you can add as many bundle arguments as you want
intent.putExtras(bundle);
startActivity(intent);
现在在您的库中或ShowEmailActivity
定义您的地方,我们将在setEmail
方法中调用该方法,onCreate
因为onCreate
一旦 Android 系统创建了 Activity ,就会调用该方法
class ShowEmailActivity extends AppCompatActivity {
@Override
void onCreate(Bundle savedInstanceState){
if(getIntent.getExtras().getString("email_extra") == null){
thrown new IllegalStateException("email_extra inside bundle cannot be null"); // Case when someone forgot to pass this bundle extra, this will be thrown
}
String myEmail = getIntent().getExtras.getString("email_extra")
setEmail(myEmail)
}
private void setEmail(String email){
// Your function implementation here
}
}
如果有语法错误,请更正,因为我习惯于 IDE 更正
推荐阅读
- go - Return: 在 Go 中意味着什么
- xml - 使用多轴表达式的 XPath
- c# - 导入的 C 函数在 C# 中有效,但在 VB6 中无效
- javascript - 不可变更新 React Hooks 数组对象
- reporting - 选择日期提示后更改时间段
- c++ - 使用 CMake 强制执行限制“需要一个替代库来链接可执行文件”
- mediawiki-api - 如何通过 API 在 MediaWiki 中创建新页面?
- windows - XAML Islands如何跟随系统主题变化?
- python - 平滑 3D 表面 [Python]
- javascript - 带有双引号的 JSON 解析错误作为无法识别的标记