如何在没有公共构造函数的情况下通过Android清单?

时间:2015-04-30 10:11:42

标签: android xml constructor android-manifest

在我的清单中,我有这个:

<activity
  android:name=".BackgroundOptionSlider"
  android:label="@string/update_background" >
</activity>

但是我的班级BackgroundOptionsSlider需要为我正在做的事情设置一个私有的默认构造函数(确保只有一个实例),因此我的清单中出现错误&#39;声明我需要一个公共默认构造函数。我怎么能超越这个?

2 个答案:

答案 0 :(得分:3)

由于BackgroundOptionSlider扩展了Activity,因此您无法避免使用默认的公共构造函数。

  

确保只有一个实例

系统已经为您提供了实现此目的的方法,声明

<activity
        android:name=".BackgroundOptionSlider"
        android:label="@string/update_background"
        android:launchMode="singleTask">
    </activity>

OR

<activity
        android:name=".BackgroundOptionSlider"
        android:label="@string/update_background"
        android:launchMode="singleInstance">
    </activity>

More information关于启动模式,还请参阅this question

答案 1 :(得分:1)

你永远不应该尝试自己实例化Activity,android框架会为你做这个,所以你应该提供一个默认的公共构造函数。如果你想只有一个活动的单个实例,你可以通过指定启动模式来实现singleInstance,here这里是关于launchModes的好读物