2015-10-09 3 views
1

Чтобы сохранить некоторые настройки, я использую класс EasyPreferences. Из-за этой библиотеки мне нужен второй класс, расширяющий приложение.Несколько классов приложений в одном проекте

Чтобы добавить его в манифесте я нашел здесь умный solution. Так просто. Так просто.

Но по какой-то причине не работает для меня.

Мой первый класс приложения:

package com.stack.overflow.network; 

import android.app.Application; 
import android.content.ContextWrapper; 
import android.text.TextUtils; 

import com.android.volley.Request; 
import com.android.volley.RequestQueue; 
import com.android.volley.toolbox.ImageLoader; 
import com.android.volley.toolbox.Volley; 
import com.pixplicity.easyprefs.library.Prefs; 

public class NetworkController extends Application { 

    public static final String TAG = NetworkController.class.getSimpleName(); 

    private RequestQueue mRequestQueue; 
    private ImageLoader mImageLoader; 
    //LruBitmapCache mLruBitmapCache; 

    private static NetworkController mInstance; 

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

    public static synchronized NetworkController getInstance() { 
     return mInstance; 
    } 

    public RequestQueue getRequestQueue() { 
     if (mRequestQueue == null) { 
      mRequestQueue = Volley.newRequestQueue(getApplicationContext()); 
     } 

     return mRequestQueue; 
    } 

    /* 
    public ImageLoader getImageLoader() { 
     getRequestQueue(); 
     if (mImageLoader == null) { 
      getLruBitmapCache(); 
      mImageLoader = new ImageLoader(this.mRequestQueue, mLruBitmapCache); 
     } 

     return this.mImageLoader; 
    }*/ 
/* 
    public LruBitmapCache getLruBitmapCache() { 
     if (mLruBitmapCache == null) 
      mLruBitmapCache = new LruBitmapCache(); 
     return this.mLruBitmapCache; 
    } */ 

    public <T> void addToRequestQueue(Request<T> req, String tag) { 
     req.setTag(TextUtils.isEmpty(tag) ? TAG : tag); 
     getRequestQueue().add(req); 
    } 

    public <T> void addToRequestQueue(Request<T> req) { 
     req.setTag(TAG); 
     getRequestQueue().add(req); 
    } 

    public void cancelPendingRequests(Object tag) { 
     if (mRequestQueue != null) { 
      mRequestQueue.cancelAll(tag); 
     } 
    } 

} 

Второй класс приложения:

package com.stack.overflow.HelperClasses.SharedPreferences; 

import com.stack.network.NetworkController; 

public class PrefsApplication extends NetworkController { 
    @Override 
    public void onCreate() { 
     super.onCreate(); 


new Prefs.Builder() 
       .setContext(getApplicationContext()) 
       .setMode(ContextWrapper.MODE_PRIVATE) 
       .setPrefsName(getPackageName()) 
       .setUseDefaultSharedPreference(true) 
       .build(); 
    } 

} 

Когда я двигаю Prefs.Builder() в OnCreate() Метод сетевой контроллер все работает отлично. Но нет, если он хранится в своем классе PrefsApplication. Я не понимаю, почему.

В AndroidManifest.xml является класс NetworkController по имени.

ответ

2

нет необходимости в том, что Android приложение может обрабатывать только один класс приложений еще вы хотите мультипликатор для этого нужно расширить класс B_Application из класса A_Application.

+0

Это именно то, что я делаю в приведенном ниже коде. И я не ошибаюсь, потому что код Prefs.Builder() никогда не выполняется – jublikon

+0

, какой класс вы добавили в манифесте Android в теге приложения. –

+0

android: name = "com.stack.overflow.network.NetworkController" – jublikon

Смежные вопросы