首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有类的Android应用程序?

没有类的Android应用程序?
EN

Stack Overflow用户
提问于 2017-02-12 21:11:26
回答 2查看 280关注 0票数 0

我最近看了一个关于Redux的JS演讲。演讲者编写了一个可以工作的应用程序,没有任何类,只有常量变量。他甚至在他的lint文件(https://github.com/MartinSeeler/redux-presentation/tree/master/demo)中排除了类。

因此,我尝试在我的Android应用程序中做同样的事情,这些应用程序是用Kotlin编写的。不幸的是,当我试图使我的MainActivity类成为一个对象时,我得到了以下错误:

代码语言:javascript
复制
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{blog.app.niklas.flyingbytes/blog.app.niklas.flyingbytes.MainActivity}: java.lang.IllegalAccessException: void blog.app.niklas.flyingbytes.MainActivity.<init>() is not accessible from java.lang.Class<android.app.Instrumentation>
    Caused by: java.lang.IllegalAccessException: void blog.app.niklas.flyingbytes.MainActivity.<init>() is not accessible from java.lang.Class<android.app.Instrumentation>

有没有办法解决这个问题?我真的很喜欢在我的应用程序中拥有尽可能多的单例对象的想法。

先谢谢你,

尼克拉斯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-15 07:24:07

正如Geoffrey所说,Android平台管理你的活动,但这也意味着该平台负责跟踪你的活动实例-这就是Singleton的目的。

因此,虽然您不能将Activity设为对象,但您仍然可以通过在AndroidManifest中使用android:launchMode属性使其成为单例

代码语言:javascript
复制
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:launchMode="singleInstance">

有关launchMode属性(包括其他可能的值)的更多信息,请查看Official Documentation

票数 0
EN

Stack Overflow用户

发布于 2017-02-13 08:04:24

在Android上,你不能用kotlin对象替换Activity类,因为同样的原因,你不能通过调用它的构造函数来实例化Activity:Activity是由平台管理的。

当你(通过一个意图)请求一个活动的平台时,平台会尝试通过调用它的零参数构造函数来实例化它。这对于一个对象是不存在的,给出了前面提到的错误。

也就是说,一些开发人员避开了安卓提供的框架,比如mortar,他们只有一个activity,并使用自定义逻辑在视图之间导航。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42187956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档