0

私が書いた Application クラスで問題が発生しています。アクティビティでアクセスしたいだけですが、アプリケーションがAndroidシステムによってインスタンス化されることはないようです(したがって、onCreateも呼び出されません)。この時点での私の唯一の疑問は、Android がマニフェストで宣言されたすべてのアプリケーションをインスタンス化できるか、または 1 つだけをインスタンス化できるかということです。

コードは次のとおりです。

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>

ご覧のとおり、実行するアクティビティは別のアプリケーションで宣言されていますが、2 番目のアプリケーションはとにかく初期化されていると思いました (実際、android:name="...MyApplication" を追加すると、アプリケーションは正しく初期化されます) )!私が間違っている?

4

1 に答える 1

2

アプリケーション クラスとインスタンスを 1 つだけ持つことができます。

ところで。あなたは必要ありませんprivate static MyApplication instance;。を使用してインスタンスを取得できますActivity.getApplication()。それでも必要な場合: スパゲッティ コードを開始しています。

于 2013-04-20T15:49:34.087 に答える