2016-12-05 58 views
1

我有这样的凌空GET请求类:传递字符串从片段到非活动类

public class VolleyGetHeaders { 
private static final String TAG = "VolleyGet"; 
private static VolleyGetHeaders instance = null; 

//for Volley API 
public RequestQueue requestQueue; 

private VolleyGetHeaders(Context context) 
{ 
    requestQueue = Volley.newRequestQueue(context.getApplicationContext()); 

    return; 
} 

public static synchronized VolleyGetHeaders getInstance(Context context) 
{ 
    if (null == instance) 
     instance = new VolleyGetHeaders(context); 
    return instance; 
} 

public static synchronized VolleyGetHeaders getInstance() 
{ 
    if (null == instance) 
    { 
     throw new IllegalStateException(VolleyGetHeaders.class.getSimpleName() + 
       " is not initialized, call getInstance(...) first"); 
    } 
    return instance; 

} 

public void VolleyGETHeaders(String domain, String api, final CustomListener<String> listener){ 

    StringRequest sr = new StringRequest(Request.Method.GET, domain +api, 
      new Response.Listener<String>() { 

       @Override 
       public void onResponse(String response) { 
        Log.e("HttpClient", "success! response: " + response); 
        if(null != response) 
         listener.getResult(response); 

        return; 

       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        if (null != error.networkResponse) 
        { 
         Log.d(TAG + ": ", "Error Response code: " + error.networkResponse.statusCode); 
         //listener.getResult(false); 
        } 
       } 
      }) 
    { 

     @Override 
     public Map<String,String> getHeaders() throws AuthFailureError { 
      HashMap<String, String> headers= new HashMap<>(); 
      headers.put("Authorization",finalToken); 
      return headers; 
     } 
    }; 
    requestQueue.add(sr); 

} 
} 

而在我的片段我想我的字符串finalToken送入类设置为标题:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    SharedPreferences sp=this.getActivity().getSharedPreferences("domainname", Context.MODE_PRIVATE); 
    String domain = sp.getString("domainname", ""); 
    SharedPreferences sp1=this.getActivity().getSharedPreferences("FINALTOKEN", Context.MODE_PRIVATE); 
    String finalToken = sp1.getString("FINALTOKEN",""); 
    VolleyGetHeaders.getInstance(getActivity()); 
    VolleyGetHeaders.getInstance().VolleyGETHeaders(domain, api, new CustomListener<String>(){ 
     @Override 
     public void getResult(String result){ 
      if (!result.isEmpty()) 
      { 
       Log.e("customer info", result); 
       System.out.println("customer info----------->" + result); 
      } 
     } 

    }); 

    return inflater.inflate(R.layout.my_account, container, false); 

我的问题是如何将finalToken传递给我的非活动类,因为您可以看到我已经创建了最终的共享首选项,但我不知道如何在非活动类中检索它。

回答

0

1)声明一个变量(finalToken)非活性类:VolleyGetHeaders

public class VolleyGetHeaders { 
private static final String TAG = "VolleyGet"; 
private static VolleyGetHeaders instance = null; 
public RequestQueue requestQueue; 
String finalToken; 

private VolleyGetHeaders(Context context,String finalToken) 
    { 
    this.context=context; 
    this.finalToken=finalToken; 
    requestQueue = Volley.newRequestQueue(context.getApplicationContext()); 

    return; 
    } 

2)在您的片段发送给最终令牌太您调用的getInstance

用于例如

VolleyGetHeaders.getInstance(getActivity(),finalToken); 
+0

那解决了我的问题,谢谢! – JerryKo

+0

欢迎我的兄弟。 –

相关问题