2015-05-07 6 views
0

Я использую класс WebServiceAdapter, используя библиотеку volley для реализации http-соединений. так как я не могу найти способ вернуть строку к активности Я использую интерфейс для вызова в MainActivity. в ней я хочу, чтобы начать новую деятельность, но она не запускаетсяначальная активность по методу обратного вызова

мой WebServiceAdapterClass

public WebServiceAdapter(Context context){ 
    this.context = context; 
    status = "new"; 
    rQueue = Volley.newRequestQueue(context); 
} 

private WebServiceInterface wsi; 
public void sendGetRequest(String page,Map<String,String> map, WebServiceInterface i){ 
    wsi = i; 
    String query = ""; 
    if(!map.isEmpty()){ 
    for (Map.Entry<String, String> entry : map.entrySet()) 
    { 
     query =query + entry.getKey()+"="+entry.getValue()+'&'; 
    } 
    } 
    if(query.length() != 0) 
     query = query.substring(0,query.length()-1); 
    StringRequest sRequest = new StringRequest(Request.Method.GET,BASE_URI+page+"?"+query, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response){ 
        wsi.successCallback(response,context); 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error){ 
        wsi.errorCallback("failed",context); 

       } 

      }); 
    rQueue.add(sRequest); 
} 

и MainActivity внутри CallBack, которые используют интерфейс для обратного вызова

@Override 
public void successCallback(String s, Context c) { 
    Intent myintent = new Intent(c,VerifyRegister.class); 
    startActivity(myintent); 
    finish(); 

} 

но деятельность не начиная с Я попытался передать это, getApplicationContext() и Main Activity.this вместо c. но никогда не работал

то, что я хотел вернуть строку на успех я не могу найти другой способ но новая деятельность начинается не

обновление

код класса verifyRegister

public class VerifyRegister extends Activity implements WebServiceInterface{ 

private Button verifyButton; 
private EditText loginVerify; 
StorageAdapter sAdapter; 

@Override 
protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    sAdapter = new StorageAdapter(); 
    if(sAdapter.getValue(this, "phone").length() == 0) 
     finish(); 
    setContentView(R.layout.login_verify); 
    verifyButton = (Button) findViewById(R.id.verifyButton); 
    loginVerify = (EditText) findViewById(R.id.loginVerify); 

    verifyButton.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v){ 

      } 
    }); 

} 

@Override 
public void successCallback(String s, Context c) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void errorCallback(String s, Context c) { 
    // TODO Auto-generated method stub 

} 

* обновление 2 * Я назвал адаптер WebService следующим образом:

wAdaptor = new WebServiceAdapter(this); 
     wAdaptor.sendGetRequest("/register",new HashMap<String,String>  (),this); 
+0

Является ли метод successCallback() находится внутри деятельности? И попытался ли вы отлаживать какую-либо проверку, на самом деле идет к методу successCallback() – Soham

+0

check successCallBack получает вызов или нет. Вторая вещь пытается использовать запуск другой Activity from mainActivity по StartActivityOnResult и после завершения работы новой Activity. результат onActivityResult в MainActivity ... – Anshuman

+0

@Soham да, это внутренняя активность, и я уже проверял, что она вызвана, но активность не начинается. – haseeb

ответ

0

я искал подобные проекты в GitHub и нашел этот

public void successCallback(String s, Context c) { 
Intent myintent = new Intent(MainActivity.this,VerifyRegister.class); 
MainActivity.this.startActivity(myintent); 
finish() 

}

0

Пожалуйста, убедитесь, что ваш VerifyRegister класс делает на самом деле расширяет активность. И если это действительно так, убедитесь, что вы добавили его в файл AndroidManifest. Еще одна вещь, которую вы можете попробовать, вы можете написать это:

Intent myintent = new Intent(MainActivity.this,VerifyRegister.class); 
+0

. Он расширяет активность, и я попробовал MainActivity.this нет ошибки, которая не начинается с новой активности. – haseeb

+0

И он также существует в AndroidManifest? –

+0

все, что я хочу, это вернуть строку из WebServiceAdapter, есть ли другой способ сделать это без использования обратных вызовов – haseeb

0

Попробуйте это:

@Override 
public void successCallback(String s, Context c) { 
    Intent myintent = new Intent(MainActivity.this,VerifyRegister.class); 
    c.startActivity(myintent); 
    //finish(); Dont use this 

} 
+0

не работает. все, что я хочу сделать, это вернуть строку, есть способ вернуть строку из webserviceadapter – haseeb

+0

, предположим, если вы хотите начать новое действие B из существующего действия A. и после завершения Activity B вы хотите отправить какой-то результат обратно активности A. вам нужно использовать startActivityForResult для запуска активности B из A. вам также необходимо переопределить функцию protected void onActivityResult (int requestCode, int resultCode, Intent data) в действии A для получения результата из Activity B – Anshuman

+0

@Anushman i dont хочу сделать это. все, что я хочу, это «как получить строку, возвращенную из класса Volley», кто-то пробовал обратные вызовы, и я сделал это. но активность не начинается – haseeb

0

Новая деятельность начинается с контекста, я ваш случай лет u должен вызвать его, используя текущую работу.

MainActivity.this.startActivity(anyintent);

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