从回调方法开始 activity
starting activity from a callback method
我使用 class WebServiceAdapter 使用 volley 库来实现 http 连接。因为我找不到 return 字符串到 activity 的方法
我使用一个接口回调到 MainActivity。在其中我想开始一个新的 activity 但它没有开始
我的 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();
}
但是 activity 没有启动
我尝试传递 this 、 getApplicationContext() 和 Main Activity.this 而不是 c。但从未工作过
我想要的是 return 成功的字符串我找不到其他方法
但是新 activity 没有开始
更新
验证注册码class
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);
请确认您的 VerifyRegister class 确实扩展了 Activity。如果确实扩展了,请确保您已将其添加到 AndroidManifest 文件中。
你可以尝试的另一件事是,你可以这样写:
Intent myintent = new Intent(MainActivity.this,VerifyRegister.class);
试试这个:
@Override
public void successCallback(String s, Context c) {
Intent myintent = new Intent(MainActivity.this,VerifyRegister.class);
c.startActivity(myintent);
//finish(); Dont use this
}
我在 github 中搜索了类似的项目
并找到了这个
public void successCallback(String s, Context c) {
Intent myintent = new Intent(MainActivity.this,VerifyRegister.class);
MainActivity.this.startActivity(myintent);
finish()
}
新的 activity 以 Context 开始,我是你的情况,你应该使用 to activity currently 运行.
来调用它
MainActivity.this.startActivity(anyintent);
我使用 class WebServiceAdapter 使用 volley 库来实现 http 连接。因为我找不到 return 字符串到 activity 的方法 我使用一个接口回调到 MainActivity。在其中我想开始一个新的 activity 但它没有开始
我的 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();
}
但是 activity 没有启动 我尝试传递 this 、 getApplicationContext() 和 Main Activity.this 而不是 c。但从未工作过
我想要的是 return 成功的字符串我找不到其他方法 但是新 activity 没有开始
更新
验证注册码class
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);
请确认您的 VerifyRegister class 确实扩展了 Activity。如果确实扩展了,请确保您已将其添加到 AndroidManifest 文件中。 你可以尝试的另一件事是,你可以这样写:
Intent myintent = new Intent(MainActivity.this,VerifyRegister.class);
试试这个:
@Override
public void successCallback(String s, Context c) {
Intent myintent = new Intent(MainActivity.this,VerifyRegister.class);
c.startActivity(myintent);
//finish(); Dont use this
}
我在 github 中搜索了类似的项目 并找到了这个
public void successCallback(String s, Context c) {
Intent myintent = new Intent(MainActivity.this,VerifyRegister.class);
MainActivity.this.startActivity(myintent);
finish()
}
新的 activity 以 Context 开始,我是你的情况,你应该使用 to activity currently 运行.
来调用它MainActivity.this.startActivity(anyintent);