从 class 打开 Activity
Opening an Activity from a class
我创建了一个名为 UserAuthentication
的 class 用于设置登录和登录。我正在使用 volley 与数据库通信。
一切正常,只是在操作成功时我无法打开下一个 activity。
我试过了,但没有任何反应:
Intent intent = new Intent(context,NextActivity.class);
context.startActivity(intent);
另外,当我输入 context.startActivity()
Android Studio 提示我添加 @RequiresPermission
但是当我添加它时,它给我一个错误。
UserAuthentication Class -> SignUp() 代码:
public void SignUp(String userName,String userSignUpEmail, String userSignUpPassword){
StringRequest stringRequest = new StringRequest(Request.Method.POST,
Constants.URL_SIGNUP,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
result = jsonObject.getString("message");
if(Objects.equals(result, "Sign Up Successful")){
Toast.makeText(context, result, Toast.LENGTH_SHORT).show();
SharedPrefManager.getInstance(context).userSignIn(
jsonObject.getInt("userId"),
jsonObject.getString("userName"),
jsonObject.getString("userEmail"));
Intent intent = new Intent(context,NextActivity.class);
context.startActivity(intent);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// progressDialog.dismiss();
Log.d("SignUpError",error.getMessage());
}
}){
@Override
protected Map<String, String> getParams() {
Map<String,String> params = new HashMap<>();
params.put("userName",userName);
params.put("userSignUpEmail",userSignUpEmail);
params.put("userSignUpPassword",userSignUpPassword);
return params;
}
};
RequestHandler.getInstance(context).addToRequestQueue(stringRequest);
}
在我的 Activity 中调用我的 class 函数:
signUpButton.setOnClickListener(v -> {
String userName = usersignUpName.getText().toString();
String userSignUpEmail = usersignUpEmail.getText().toString();
String userPassword = userpassword.getText().toString();
String userConfirmPassword = userconfirmPassword.getText().toString();
if(userPassword.equals(userConfirmPassword)) {
UserAuthentication userAuthentication = new UserAuthentication(SignUpActivity.this);
userAuthentication.SignUp(userName, userSignUpEmail, userPassword));
}
else{
Toast.makeText(SignUpActivity.this, "Passwords do not match !", Toast.LENGTH_SHORT).show();
}
});
您可以尝试将 Activity 上下文传递给您的 SignUp 参数。
如您所知,Intent 仅适用于 Activity.
的当前上下文
即
UserAuthentication userAuthentication = new UserAuthentication(SignUpActivity.this);
userAuthentication.SignUp(activityContext ,userName, userSignUpEmail, userPassword));
Intent
和 startActivity()
中没有错误。
我试图从 SharedPrefManager
中的 JSONObject 访问一个字符串,但我的 PHP 代码中没有传递任何字符串。
这些语句工作得很好 -
Intent intent = new Intent(conext,NextActivity.class);
startActivity(intent);
我创建了一个名为 UserAuthentication
的 class 用于设置登录和登录。我正在使用 volley 与数据库通信。
一切正常,只是在操作成功时我无法打开下一个 activity。
我试过了,但没有任何反应:
Intent intent = new Intent(context,NextActivity.class);
context.startActivity(intent);
另外,当我输入 context.startActivity()
Android Studio 提示我添加 @RequiresPermission
但是当我添加它时,它给我一个错误。
UserAuthentication Class -> SignUp() 代码:
public void SignUp(String userName,String userSignUpEmail, String userSignUpPassword){
StringRequest stringRequest = new StringRequest(Request.Method.POST,
Constants.URL_SIGNUP,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
result = jsonObject.getString("message");
if(Objects.equals(result, "Sign Up Successful")){
Toast.makeText(context, result, Toast.LENGTH_SHORT).show();
SharedPrefManager.getInstance(context).userSignIn(
jsonObject.getInt("userId"),
jsonObject.getString("userName"),
jsonObject.getString("userEmail"));
Intent intent = new Intent(context,NextActivity.class);
context.startActivity(intent);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// progressDialog.dismiss();
Log.d("SignUpError",error.getMessage());
}
}){
@Override
protected Map<String, String> getParams() {
Map<String,String> params = new HashMap<>();
params.put("userName",userName);
params.put("userSignUpEmail",userSignUpEmail);
params.put("userSignUpPassword",userSignUpPassword);
return params;
}
};
RequestHandler.getInstance(context).addToRequestQueue(stringRequest);
}
在我的 Activity 中调用我的 class 函数:
signUpButton.setOnClickListener(v -> {
String userName = usersignUpName.getText().toString();
String userSignUpEmail = usersignUpEmail.getText().toString();
String userPassword = userpassword.getText().toString();
String userConfirmPassword = userconfirmPassword.getText().toString();
if(userPassword.equals(userConfirmPassword)) {
UserAuthentication userAuthentication = new UserAuthentication(SignUpActivity.this);
userAuthentication.SignUp(userName, userSignUpEmail, userPassword));
}
else{
Toast.makeText(SignUpActivity.this, "Passwords do not match !", Toast.LENGTH_SHORT).show();
}
});
您可以尝试将 Activity 上下文传递给您的 SignUp 参数。 如您所知,Intent 仅适用于 Activity.
的当前上下文即
UserAuthentication userAuthentication = new UserAuthentication(SignUpActivity.this);
userAuthentication.SignUp(activityContext ,userName, userSignUpEmail, userPassword));
Intent
和 startActivity()
中没有错误。
我试图从 SharedPrefManager
中的 JSONObject 访问一个字符串,但我的 PHP 代码中没有传递任何字符串。
这些语句工作得很好 -
Intent intent = new Intent(conext,NextActivity.class);
startActivity(intent);