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