アプリケーション内で使用するさまざまな書体を保存するために、Android アプリでアプリケーションを拡張しました。すべて正常に動作していますが、コードのシングルトン部分と getInstance の目的を理解していません (そこにブレークポイントを設定しましたが、呼び出されません。また、メソッドの名前を変更すると、アプリケーションは正常に動作します良い)。誰かがこのパターンについて教えてくれますか? 私は通常 OOP を使用しないので、ばかげた質問かもしれません。
MyApplication.java
public class MyApplication extends Application {
private Typeface _typefaceNormal;
private Typeface _typefaceBold;
private static MyApplication singleton;
public MyApplication getInstance() {
return singleton;
}
@Override
public void onCreate() {
super.onCreate();
singleton = this;
this._typefaceNormal = Typeface.createFromAsset(getAssets(),"PTS55F.TTF");
this._typefaceBold = Typeface.createFromAsset(getAssets(), "PTS75F.TTF");
}
public Typeface getNormalFont() {
return this._typefaceNormal;
// return this._typefaceNormal;
}
public Typeface getBoldFont() {
return this._typefaceBold;
// return this._typefaceBold;
}
}
そして、次のように呼び出します。
this._typeface = ((MyApplication) _activity.getApplicationContext()).getNormalFont();
編集
私が集めた答えといくつかの追加の調査から、これは私が最終的に使用したクラスでした:
public class MyGlobalConfig {
private static MyGlobalConfig singleton;
private Typeface _typefaceNormal;
private Typeface _typefaceBold;
private MyGlobalConfig() {
}
public static MyGlobalConfig getInstance() {
if (singleton == null) {
singleton = new MyGlobalConfig();
}
return singleton;
}
public void init(Context ctx, String typefaceNormal, String typefaceBold) {
this._typefaceNormal = Typeface.createFromAsset(ctx.getAssets(),
typefaceNormal);
this._typefaceBold = Typeface.createFromAsset(ctx.getAssets(),
typefaceBold);
}
public Typeface getNormalFont() {
return this._typefaceNormal;
// return this._typefaceNormal;
}
public Typeface getBoldFont() {
return this._typefaceBold;
// return this._typefaceBold;
}
}
次のように初期化します。
MyGlobalConfig.getInstance().init(getApplicationContext(), normalFont, boldFont);
そして、私のフォントを次のように設定します:
MyGlobalConfig.getInstance().getNormalFont();