2013-04-20 27 views
0

我遇到了我寫的應用程序類的一些問題。我只是想在我的活動中訪問它,但似乎應用程序從未由android系統實例化(因此onCreate從未被調用)。 我唯一的疑問就是如果android可以實例化所有在manifest中聲明的應用程序或者只是一個。android永遠不會調用onCreate我的應用程序類(在清單中註冊)

下面是代碼:

package org.dyndns.bertuz83.test.applicationTst; 

import android.app.Application; 

public class MyApplication extends Application{ 
private String prova=""; 

private static MyApplication instance; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    instance= this; 

    this.prova="ciao!"; 
} 

public static MyApplication getInstance(){ 
    return instance; 
} 

public String getProva(){ 
    return this.prova; 
} 
} 

和清單的模樣:

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" 
    android:name="org.dyndns.bertuz83.test.applicationTst.MyApplication"> 
    <activity 
     android:name="org.dyndns.bertuz83.test.applicationTst.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

<application 
    android:allowBackup="true" 
    android:name="org.dyndns.bertuz83.test.applicationTst.MyApplication"></application> 
</manifest> 

正如你所看到的,我跑活動是根據另一個應用程序中聲明,但我認爲第二應用程序本來會被初始化(事實上,如果我添加android:name =「... MyApplication」,我的應用程序就會正確初始化)!我錯了嗎?

+0

爲什麼你申報兩次?編輯:好的,對不起,這只是一個測試。 – 2013-04-20 15:41:26

回答

2

您只能有一個應用程序類和實例。

Btw。你不需要private static MyApplication instance;。您可以使用Activity.getApplication()來獲得實例。如果你仍然需要它:你正在開始意大利麪代碼。

+0

所以:如果我想通過個性化的應用程序類來存儲一些「全局」信息,那麼我只需寫信,然後在我的標籤中定義它,這要歸功於name屬性。 這將是系統爲我的應用程序實例化的* ONLY *應用程序。對? 感謝您對單身人士的建議,我會將其刪除。確切地說,是 – Bertuz 2013-04-20 16:12:51

+0

。我也建議創建一個單獨的模型類並在Application.onCreate中實例化它。這樣你得到一個可測試的對象(即使你現在不會創建單元測試)。 – 2013-04-20 16:41:49

相關問題