首页 > 解决方案 > 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 的意图时,什么也没有发生。
我显然做错了什么,有人可以提出任何建议吗?
谢谢你。

标签: androidandroid-studiokotlinmodule

解决方案


您正在尝试实例化一个Activity并且这不起作用,因为这是由 Android 系统本身完成的

因此,如果您需要在创建 Activity 后立即调用特定方法sendEmail,或者在 Java 术语中创建实例并具有参数 as myEmail,则可以使用onCreateActivity 的方法

让我添加一些示例代码来帮助您处理您的案例

假设我们有你的活动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 更正


推荐阅读