Я расширил приложение в своем приложении для Android, чтобы хранить различные шрифты, которые я использую в своем приложении. Все работает нормально, однако я не понимаю синглтонную часть кода и какова цель getInstance (я устанавливаю там точку останова, и она никогда не вызывается, также если я изменяю имя метода, приложение работает отлично, как Что ж). Может ли кто-нибудь просветить меня по этому образцу? Обычно я не работаю с ООП, так что это может быть глупый вопрос.Расширение приложения Android.
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();
EDIT
Из ответов я собранными, и некоторые дополнительные исследования, это был класс, который я закончил:
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();
Насколько мне известно, вам не нужен синглтон, так как вы (скорее всего) не будете иметь одновременно два приложения. – guness
«Приложение» * IS * singleton - есть только один экземпляр. Кроме того, не расширяйте 'Application', чтобы делать что-то столь же тривиальное, как получение шрифтов. – Squonk
@Squonk Итак, каковы критерии? Я думал, что с тех пор, и я действительно не знаю, почему Android только позволяет нам изменить шрифт программно, и поскольку я использую много «setTypeFace», это было бы хорошее место для хранения в качестве глобальной переменной. – Bernardo