2017-06-17 19 views
-2

私はAndroidベースのニュースアプリを作成しようとしています。このニュースアプリは、各記事がニュース記事を表すJSONオブジェクトの配列を持つJSONオブジェクトをリクエストします。私はこれらの要求を実行するためにVolleyライブラリを使用しています。Volley.newRequestQueue()not working

I静的このように様々な用途のためのアプリケーション・コンテキストを取得するためにContextHelperクラスを作成した: -

public class ContextHelper { 
public static Context ctxForAll; 

public static void setCtxForAll(Context context){ 
    ctxForAll=context; 
}} 

そしてIは ContextHelper.setCtxForAll(getApplicationContext())like` MainActivityからコンストラクタと呼ばれます。

私はVolley.newRequestQueue()メソッドでこのコンテキストを渡しました。 パブリッククラスNWReqUtility {

private static String TAG = NWReqUtility.class.getName(); 

private static NWReqUtility ourInstance; 
private RequestQueue mRequestQueue; 
private static Context mContext; 

public static synchronized NWReqUtility getInstance() { 
    if (ourInstance==null){ 
     ourInstance = new NWReqUtility(); 
    } 
    return ourInstance; 
} 

private NWReqUtility() { 
    mContext = ContextHelper.ctxForAll; 
    mRequestQueue = getRequestQueue(); 

} 

public RequestQueue getRequestQueue() { 
    if (mRequestQueue==null){ 
     mRequestQueue = Volley.newRequestQueue(mContext); 
    } 
    return mRequestQueue; 
} 
public <T> void addToRequestQueue(Request<T> req){ 
    getRequestQueue().add(req); 
} 

public void cancel(){ 
    mRequestQueue.cancelAll(TAG); 
}} 

しかし、私はアプリを実行したとき、私は、要求が成功しなかったことが分かりました。 はさらにコードを経由で、私はライン

Volley.newRequestQueue(mContext); 

が問題を与えていることがわかりました。

この問題はなぜ発生しますか?どんな助けもありがとう。

<application 
     android:name=".MyApp" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name"> 

をし、クラス:次のようにあなたのcontexthelperの

+0

エラーは何ですか?あなたのlogcatの出力を投稿する –

+0

コンテキストの代わりにgetApplicationContext()を使用し、そのdone –

答えて

0

インプレースでは、このクラスを使用してAndroidManifest にこれを追加し

public class MyApp extends Application{ 
    private static MyApp instance = null; 

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

    public static MyApp getsInstance(){ 
     return instance; 
    } 

    @Override 
    protected void attachBaseContext(Context base) { 
     super.attachBaseContext(base); 
    } 

    public static Context getAppContext(){ 
     return instance.getApplicationContext(); 
    } 
} 

そして、あなたのコード内:

public RequestQueue getRequestQueue() { 
    if (mRequestQueue==null){ 
     mRequestQueue = Volley.newRequestQueue(MyApp.getAppContext()); 
    } 
    return mRequestQueue; 
}