从回调方法

时间:2015-05-07 05:34:02

标签: java android android-activity callback intentservice

我使用类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);
}

并在callBack内的MainActivity中使用接口进行回调

@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 Adapter

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

4 个答案:

答案 0 :(得分:0)

请确认您的 VerifyRegister 类确实扩展了活动。如果它确实扩展了,请确保您已将其添加到 AndroidManifest 文件中。 您可以尝试的另一件事是,您可以这样写:

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

答案 1 :(得分:0)

试试这个:

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

}

答案 2 :(得分:0)

我在github上搜索过类似的项目 并找到了这个

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

}

答案 3 :(得分:0)

新活动从Context开始,我的情况是你应该通过使用当前正在运行的活动来调用它。

MainActivity.this.startActivity(anyintent);