2016-05-24 2 views
-1

Я пытаюсь открыть новую активность на onResponse of Volley. Но я не знаю, какие параметры я могу использовать. Действительно мой запрос Volley находится в другом классе, и, я думаю, мне нужно передать контекст моего первого класса на второй. Но я понятия не имею, как я могу это сделать.Как открыть новую активность на onResponse of Volley

public class ConnexionActivity extends Activity{ 

EditText textlogin; 
EditText textpassword; 
Button btnConnexion; 

String login; 
String password; 

private AllRequest req; 
private PrefManager pref; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.connexion); 

    this.req = new AllRequest(getApplicationContext()); 
    this.pref = new PrefManager(getApplicationContext()); 

    textlogin = (EditText) findViewById(R.id.editText_login_connexion); 
    textpassword = (EditText) findViewById(R.id.editText_mdp_connexion); 
    btnConnexion = (Button) findViewById(R.id.btn_Connexion); 

    btnConnexion.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      login = textlogin.getText().toString(); 
      password = textpassword.getText().toString(); 

      req.TokenRequest(login, password); 

     } 
    }); 

} 

}

И это часть моей функции, сделать запрос Volley:

public void TokenRequest(final String login, final String password){ 
    final StringRequest stringRequest = new StringRequest(com.android.volley.Request.Method.POST, ressources.urlToken, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        Log.e("onResponse", response); 
        pref = new PrefManager(context); 

        pref.storeIsConnect(true); 

        try{ 

         JSONObject rep = new JSONObject(response); 



         //stockage des données 
         pref.storeScope(rep.getString("scope")); 
         pref.storeTokenType(rep.getString("token_type")); 
         pref.storeAccessToken(rep.getString("access_token")); 
         pref.storeRefreshToken(rep.getString("refresh_token")); 
         pref.storeExpiresIn(rep.getString("expires_in")); 

        }catch (JSONException e) { 
         e.printStackTrace(); 
         Log.e("erreurJSON", e.getMessage()); 
        } 

        //I don't know how do this part 
        Intent intent = new Intent(ConnexionActivity.getContext(), listMirorActivity.class); 
        startActivity(intent); 

       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Log.e("onErrorResponse", error.toString()); 
     } 



    }){ 
     @Override 
     public Map<String, String> getParams() throws AuthFailureError { 
      HashMap<String, String> params = new HashMap<String, String>(); 
      params.put("grant_type", "password"); 
      params.put("username", login); 
      params.put("password", password); 
      return params; 
     } 

     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      Map<String,String> headers = new HashMap<String, String>(); 
      // add headers <key,value> 

      String credentials = ressources.client_id + ":" + ressources.client_secret; 
      String auth = "Basic " 
        + Base64.encodeToString(credentials.getBytes(), 
        Base64.NO_WRAP); 
      headers.put("Authorization", auth); 
      return headers; 
     } 
    }; 

    queue.add(stringRequest); 

} 
+0

очевидно в так же, как логин и пароль ... или сохранить его в классе 'A llRequest' тогда использовал свое поле – Selvin

ответ

1
public void TokenRequest(final Context context,final String login, final String password){ 
    final StringRequest stringRequest = new StringRequest(com.android.volley.Request.Method.POST, ressources.urlToken, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        Log.e("onResponse", response); 
        pref = new PrefManager(context); 

        pref.storeIsConnect(true); 

        try{ 

         JSONObject rep = new JSONObject(response); 



         //stockage des données 
         pref.storeScope(rep.getString("scope")); 
         pref.storeTokenType(rep.getString("token_type")); 
         pref.storeAccessToken(rep.getString("access_token")); 
         pref.storeRefreshToken(rep.getString("refresh_token")); 
         pref.storeExpiresIn(rep.getString("expires_in")); 

        }catch (JSONException e) { 
         e.printStackTrace(); 
         Log.e("erreurJSON", e.getMessage()); 
        } 

        //I don't know how do this part 
        Intent intent = new Intent(context, listMirorActivity.class); 
        startActivity(intent); 

       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Log.e("onErrorResponse", error.toString()); 
     } 



    }){ 
     @Override 
     public Map<String, String> getParams() throws AuthFailureError { 
      HashMap<String, String> params = new HashMap<String, String>(); 
      params.put("grant_type", "password"); 
      params.put("username", login); 
      params.put("password", password); 
      return params; 
     } 

     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      Map<String,String> headers = new HashMap<String, String>(); 
      // add headers <key,value> 

      String credentials = ressources.client_id + ":" + ressources.client_secret; 
      String auth = "Basic " 
        + Base64.encodeToString(credentials.getBytes(), 
        Base64.NO_WRAP); 
      headers.put("Authorization", auth); 
      return headers; 
     } 
    }; 

    queue.add(stringRequest); 

} 

и в вашем изменении активности req.TokenRequest(login, password); с req.TokenRequest(ConnexionActivity.this,login, password);

+0

'public void TokenRequest (контекст контекста, окончательный вход в строку, окончательный пароль String)' он даже не компилируется ... параметр 'context' не может использоваться в анонимном классе ** edit: ** ok you исправлено ли оно – Selvin

+0

действительно ли код работает сейчас? –

+0

Я не могу скомпилировать из-за startActivity. Это примечание «не может разрешить метод» –

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