范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

将Kotlin添加到现有应用

  转载From:https://developer.android.google.cn/kotlin/add-kotlin
  Android Studio 提供全面的 Kotlin 支持,让您能够将 Kotlin 文件添加到现有项目并将 Java 语言代码转换为 Kotlin 代码。然后,您可以使用 Android Studio 的所有现有工具来处理 Kotlin 代码,包括自动补全、lint 检查、重构和调试等。
  如果您要开始一个新项目,并希望使用 Kotlin,请参阅创建项目。
  如需示例,请查看我们的 Kotlin 代码示例。将 Kotlin 添加到现有项目
  如需将 Kotlin 添加到项目,请执行以下操作:依次点击 File > New,然后从各种 Android 模板中选择一个,例如一个新的空白 Fragment,如图 1 所示。如果您未在此菜单中看到模板列表,请先打开 Project 窗口,然后选择您的应用模块。图 1.从可用模板中进行选择,例如 Fragment 或 Activity。在随即显示的向导中,选择 Kotlin 作为 Source Language。图 2 显示了当您要创建新 Activity 时使用的 New Android Activity 对话框。图 2. New Android Activity 对话框,您可以从中选择 Kotlin 作为 Source Language。继续执行向导中的操作,直到完成。
  或者,您也可以依次点击 File > New > Kotlin File/Class 以创建一个基本的 Kotlin 文件。如果您没有看到此选项,请打开 Project 窗口,然后选择 java 目录。在 New Kotlin File/Class 窗口中,您可以定义文件名并提供多种文件类型选择:File、Class、Interface、Enum Class 或 Object。您做出的选择决定了在新的 Kotlin 文件中为您创建的基本架构。如果您选择 Class,Android Studio 会创建一个具有给定名称和匹配类定义的新 Kotlin 源文件。如果您选择 Interface,会在文件中声明一个接口,诸如此类。
  如果这是您首次直接将一个新的 Kotlin 类或文件添加到项目(不使用 Android 模板),Android Studio 会显示一条警告,指出项目中未配置 Kotlin,如图 3 所示。您可以在编辑器的右上角点击 Configure 或在右下角弹出的事件日志提醒中点击该按钮来配置 Kotlin。
  图 3.如果没有为项目配置 Kotlin,Android Studio 会显示一个警告对话框。
  出现提示时,选择用于为包含 Kotlin 文件的所有模块配置 Kotlin 的 All modules containing Kotlin files 选项,如图 4 所示:
  图 4. 选择为包含 Kotlin 代码的所有模块配置 Kotlin。
  您点击 OK 后,Android Studio 会将 Kotlin 添加到项目类路径,并将 Kotlin Android 插件应用于包含 Kotlin 文件的每个模块。build.gradle   文件应与以下示例类似:// Project build.gradle file. buildscript {     ext.kotlin_version = "1.4.10"     ...     dependencies {         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"     } } // Inside each module using kotlin plugins {     ...     id "kotlin-android" } ...  dependencies {    implementation "androidx.core:core-ktx:1.3.2"    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" } 源代码组织
  默认情况下,新的 Kotlin 文件保存在 src/main/java/   中,这样方便您在一个位置同时查看 Kotlin 文件和 Java 文件。如果您希望将 Kotlin 文件与 Java 文件分开,可以将 Kotlin 文件放在 src/main/kotlin/   下。如果这样做,则还需要在 sourceSets  配置中添加此目录,如下所示:android {    sourceSets {        main.java.srcDirs += "src/main/kotlin"    } } 将现有 Java 代码转换为 Kotlin 代码
  如需将 Java 代码转换为 Kotlin 代码,请在 Android Studio 中打开 Java 文件,然后依次选择 Code > Convert Java File to Kotlin File。或者,也可以创建一个新的 Kotlin 文件(依次选择 File > New > Kotlin File/Class),然后将 Java 代码粘贴到该文件中。Android Studio 随即显示一条提示,询问您是否要将代码转换为 Kotlin 代码,如图 5 所示。点击 Yes 即可转换。您可以选择性地勾选 Don"t show this dialog next time,这样会使将来的转换自动进行。
  图 5. Android Studio 可将 Java 代码转换为 Kotlin 代码。代码转换和可为 null 性
  Android Studio 的转换过程会生成与编译和运行的 Kotlin 代码在功能上等效的代码。不过,您可能需要对转换后的代码进行额外的优化。例如,您可能想要优化转换后的代码如何处理可为 null 类型。
  在 Android 中,通常会延迟 View   对象及其他组件的初始化,直到它们附加到的 Fragment 或 Activity 达到适当的生命周期状态。例如,您可能在某个 Fragment 中引用了一个按钮,如以下代码段所示:public class JavaFragment extends Fragment {      // Null until onCreateView.     private Button button;      @Override     public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,             Bundle savedInstanceState) {         View root = inflater.inflate(R.layout.fragment_content, container,false);          // Get a reference to the button in the view, only after the root view is inflated.         button = root.findViewById(R.id.button);          return root;     }      @Override     public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {         super.onViewCreated(view, savedInstanceState);          // Not null at this point of time when onViewCreated runs         button.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {                 ...             }         });     } }
  尽管按钮变量可为 null,但实际上,在本例中使用时,它绝不能为 null。不过,由于在构建时没有为按钮变量赋值,因此生成的 Kotlin 代码将 Button   视为可为 null 类型,并在添加点击监听器时使用非 null 断言运算符来解封按钮,如下所示:class JavaFragment : Fragment() {      // Null until onCreateView.     private var button: Button? = null      override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,             savedInstanceState: Bundle?): View? {         ...         // Get a reference to the button in the view, only after the root view is inflated.         button = root.findViewById(R.id.button)         ...     }      override fun onViewCreated(view: View, savedInstanceState: Bundle?) {         super.onViewCreated(view, savedInstanceState)          // Not null at the point of time when onViewCreated fires         // but force unwrapped nonetheless         button!!.setOnClickListener { }     } }
  对于这种情况,这种转换不如使用 lateinit   理想,因为您不得不在访问按钮引用的每个位置都使用非 null 断言或安全调用运算符解封按钮引用。
  注意 :此示例并不意味着您应始终避免可为 null 类型。 通常,使用 lateinit  的这种 模式适用于预计从不为 null 但在其定义位置无法初始化的变量(View  引用就是 这种情况,这些引用在它们所在的 Fragment 或 Activity  内 无法初始化)。
  在其他情况下(根据应用的用例,null   是有效的变量赋值),将安全调用运算符 (?.) 与终止 elvis 运算符 (?:) 一起使用可能是一种更合适的方法,可以安全地解封可为 null 对象或将其强制转换为合理的非 null 默认值。在转换过程中,Android studio 没有足够的信息做出这一决定。虽然它默认为非 null 断言,但您应不断跟进并根据需要调整转换后的代码。

白话NBA篮网逆转战胜火箭,哈登受伤反而是件好事文大白(白话频道)大家好,我是大白。欢迎来到我的白话频道。今天说一下篮网和火箭这场球。火箭赛季初的时候,就有白话粉丝问过我,说火箭新主教练塞拉斯是不是有两下子,我说一个教练是不是有白话NBA湖人猎杀黄蜂豪取四连胜,詹姆斯,你能做个人吗?大家好,我是大白。欢迎来到我的白话频道。今天说一下湖人和黄蜂这个球,由于最近三球打得很火热,所以已经渐渐吸引了媒体的焦点,所以今天黄蜂和湖人打比赛,被很多媒体渲染成了是三球和老詹的全新中底变软了,也更弹了,Altra奥创torin5跑鞋首发快评Altratorin作为Altra家族中轻量缓冲的全能跑鞋,在今年年中迎来了大升级TORIN5。按照Altra的惯例,整数级别的都是全新的迭代升级,而X。5后缀的,都是改进式的小升白话NBA篮网只用一节就打花黄蜂,阿德好像天生就属于篮网文大白(白话频道)大家好,我是大白。欢迎来到我的白话频道。今天说一下篮网和黄蜂这场球。这场球黄蜂第一节就被篮网打花了,三分10中1,第一节被篮网防得只拿11,创下赛季最低低分。今天白话NBA阿德加盟篮网震惊联盟,但他的戏份不如格里芬大家好,我是大白。欢迎来到我的白话频道。今天NBA又出现一个重磅新闻,就是篮网宣布正式签下阿尔德里奇,一起冲击总冠军。现在买断市场就两条大鱼,一条是庄神,还有一条是阿德。阿德现在定白话NBA篮网击败奇才成功复仇,格里芬首秀勉强及格大家好,我是大白。欢迎来到我的白话频道。今天说一下奇才和篮网这场球。奇才和篮网前不久打过一场,那场杜兰特还在,那场其实篮网打得不错,命中率和三分都要好于奇才,但是奇才赢在两点。第一水洗干净无线方便高性价比的Dreame追觅H11Max智能无线洗地机因为之前用的Dreame追觅V11无线吸尘器给我留下了良好的使用体验,我对追觅品牌的影响一直非常好。所以这次追觅的H11Max智能无线洗地机,我自然也第一时间入手体验了。新品dre1。2折1。6折,买买买不曾停,2双高折扣皮鞋入手闲着无聊刷6pm的时候,发现有大批高折扣的鞋子,我的码也挺多的,就挑来挑去,选了2双入手。一双是CarlosbyCarlosSantana的布洛克雕花牛津鞋,固特异工艺,原价249心级服务您真的了解家用无线设备嘛?随着网络技术的迅猛发展,经常会听到有人说我们家WiFi设备上网好慢,又不能上网了。那么大家口中说的WiFi设备到底有哪些呢?您真的了解家里面一直在使用的光猫网关路由器这些上网设备吗心级服务鱼塘养殖常遭贼,怎么办?最近办公室小王有点闷闷不乐,闲聊后得知,他父母是农村的,也没什么收入来源,主要是靠家里承包的一个鱼塘养家糊口,最近鱼的价格比较贵,本来是很值得开心的事情,却因为经常有人乘着家里没人关爱困难家庭走访慰问暖人心为进一步关爱困难家庭,9月24日下午,盘溪第一社区联合团员志愿者水电燃气公司工作人员共同上门慰问困难家庭刘雨禾家,在国庆节来临之际,上门检查水电设备情况,详细询问其生活健康经济等情
中国航天科工与中交集团签署战略合作框架协议5月28日,中国航天科工集团有限公司与中国交通建设集团有限公司签署战略合作框架协议,双方将围绕新型基础设施建设国家区域协调发展重大工程智能高端装备等领域开展合作。中国航天科工党组书小米CC新机系列已确认要来,高配版搭载骁龙8708月17日消息!据数码博主带来的最新爆料显示小米CC系列的新机型或将被命名为CC10,但按照时间线来排的话,也有可能用上和小米11相同的数字序列,命名为CC11。据悉!该产品线将包杭锅集团与中控太阳能签署战略合作协议5月27日,杭州锅炉集团股份有限公司与浙江中控太阳能技术有限公司在杭州签署熔盐储能光热发电项目战略合作框架协议,旨在通过深化合作交流,共同助力碳达峰,迈向碳中和,践行3060目标。扬州德云与常熟开关考察交流暨团建活动圆满落幕近日,扬州德云电气设备集团有限公司一行由徐长华董事长带队,来到常熟开关建业路厂区考察交流。扬州德云电气设备集团有限公司秉承创造优良服务社会诚信为本与时俱进的发展宗旨,坚持以市场为龙陕西北人CL350高速热转印涂布机出口日本近期,北人智能子公司陕西北人与日本某客户签订一台CL350高速热转印涂布机,主要用于生产高端档次碳带,有效解决了涂布碳带高速划伤料膜打皱设备与终端产品单一对应等难题。该设备配置有四国内首台载重290吨无人驾驶矿用卡车成功实现混编作业连续运行载重290吨930E无人驾驶矿用卡车5月13日上午,在国能准能集团煤矿智能化建设现场会上,准能集团黑岱沟露天煤矿航天重工与慧拓智能联合攻关改造的国内首台载重290吨930E无人驾驶远东与中铁建设签订战略合作协议6月1日,远东控股集团创始人董事局主席党委书记蒋锡培率队参访中铁建设集团有限公司(简称中铁建设),双方签订战略合作协议。中铁建设党委书记董事长梅洪亮,总经理党委副书记孙洪军,副总经兰石集团装备公司9000米动力猫道机试制成功并实现成果转化近日,兰石集团装备公司研发设计制造的首套9000米动力猫道机于钻机总装试验场成功完成内部试验,不久将交付客户使用。动力猫道机于2020年11月投入工艺试制,先后历经图纸工艺性结构审力劲集团与文灿股份7套超大型智能压铸单元合作项目正式启动实施6月5日,文灿股份控股子公司雄邦压铸(南通)有限公司(以下简称南通雄邦)举行了大型一体化压铸工程开工仪式。自此,力劲集团文灿股份7套超大型智能压铸单元合作项目正式进入实施阶段。文灿中国机床与上海寰球签署战略合作框架协议5月26日,中国机床销售与技术服务有限公司与上海寰球工程有限公司在上海寰球总部签署战略框架协议。中国机床党委书记副董事长总经理唐亮,上海寰球党委书记董事长刘元丹,总经理李宇鹏等出席创想杯增材制造(3D打印)设备操作员竞赛在京启动2021年5月30日,由国家人力资源和社会保障部批准,中国电子商会中国就业培训技术指导中心中国国防邮电工会全国委员会联合主办的2021全国行业职业技能竞赛全国电子信息服务业职业技能