Bir projeye bağımlılık enjeksiyonunu Dagger aracılığıyla tanıtmak istiyorum. Aşağıdaki kod enjeksiyonunu statik sınıflarına tanımlamak için bir örnek olarak işlev görür.Hançer kullanarak statik sınıflar nasıl enjekte edilir?
statik yöntem setupTextView()
birden sınıflardan denir:
public abstract class TextViewHelper {
public static void setupTextView(TextView textView,
Spanned text,
TrackingPoint trackingPoint) {
textView.setText(text, TextView.BufferType.SPANNABLE);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyApp.getTracker().track(trackingPoint);
}
});
}
}
Burada yardımcı yöntemi nasıl kullanıldığını bir örnek:
TextViewHelper.setupTextView(this, R.id.some_text_view,
R.string.some_text,
TrackingPoint.SomeTextClick);
yardımcı yönteminde kullanılan izleme tarafından sağlanmaktadır uygulama sınıfı:
public class MyApp extends Application {
private static Tracking mTracking;
public void onCreate() {
super.onCreate();
mTracking = getTracking(getApplicationContext());
}
private Tracking getTracking(Context context) {
if (BuildConfig.DEBUG) {
return new NoTracking();
} else {
return new NsaTracking(context);
}
}
public static Tracking getTracker() {
return mTracking;
}
}
Şimdi tr enjeksiyonu yapmak istiyorum Hançer ile acking.
TextViewHelper.setupTextView(this, R.id.some_text_view,
R.string.some_text,
TrackingPoint.SomeTextClick,
Tracking tracking);
Bu iyi tasarım gibi hissetmez: Ben kodu refactored zaman doğrudan statik sınıfa enjekte edemez çünkü ben statik yardımcı benim Aktivite veya Fragment gelen izleme nesnesinin geçmesi gerekir fark desen - TrackPoint
ve Tracking
nesnesini geçtim. Bunu nasıl geliştirirsin?
NsaTracking? -) – ligi