我在mainActivity中有以下方法,但我试图将其移动到单独的类文件中,以便我可以在其他活动中调用它
public void addUser(){
StringRequest stringRequest = new StringRequest(Request.Method.POST,
constants.register_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getApplicationContext(), response ,Toast.LENGTH_LONG).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), error.getMessage() ,Toast.LENGTH_LONG).show();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<>();
params.put("username", "value");
params.put("email", "value");
params.put("password", "value");
return params;
}
};
requestHandler.getInstance(this).addToRequestQueue(stringRequest);
}
我已经创建了一个名为'aqlCalls'的类,并试图将这个和其他方法放在里面,但我无法想象如何做到这一点.. 任何帮助表示赞赏..
答案 0 :(得分:1)
您可以创建自己的侦听器以与活动进行通信,并将方法设置为静态并保存在类中,传递Context并在请求调用中使用它。
public static void addUser(Context context, AddUserListener listener){
...
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
listener.onSucces(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
listener.onError(error.getMessage())
}
})
听众应该是:
public interface AddUserListener{
void onSuccess(String response);
void onError(String message)
}
最后在活动中这样做:
MyClass.addUser(getApplicationContext(), new AddUserListener {
@Override
void onSuccess(String response){
... //Toast.makeText(...)
}
@Override
void onError(String message){
...//Toast.makeText(...)
}
});
<强> 注意: 强> 如果您在帖子中收到任何异常,请写下您可能会收到与MainThread相关的例外
答案 1 :(得分:1)
我认为你需要首先尝试找到确切的问题。
根据您方法中的代码,我猜问题是Toast
。如果要在Activity外部使用Toast,则需要将上下文传递给此方法。如果你搜索“Android toast outside activity”,你会得到很多类似的问题。例如this。
我建议在context
addUser()中添加一个新参数,并使用上下文来显示Toast。
使用此方法时,将上下文(例如getApplicationContext()
)传递给方法。
例如
void addUser(Context mcontext){
//all the toast usage change to
Toast.makeText(mContext, ....)
}
答案 2 :(得分:0)
我觉得你看起来像这样:
public class aqlCalls {
public static void addUser(Context context) {
StringRequest stringRequest = new StringRequest(Request.Method.POST, constants.register_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getApplicationContext(), response, Toast.LENGTH_LONG).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show();
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("username", "value");
params.put("email", "value");
params.put("password", "value");
return params;
}
};
requestHandler.getInstance(context).addToRequestQueue(stringRequest);
}
}
然后你可以通过以下方式从你的班级打电话:
public class OtherClass{
static void yourMethode() {
aqlCalls.addUser();
}
}
我认为这就是你要找的东西。