从班级打开活动
Posted
技术标签:
【中文标题】从班级打开活动【英文标题】:Opening an Activity from a class 【发布时间】:2021-12-24 12:48:25 【问题描述】:我创建了一个名为UserAuthentication
的类,用于设置登录和登录。我正在使用 volley 与数据库进行通信。 除了操作成功时我无法打开下一个活动之外,一切正常。
我已经尝试过了,但没有任何反应:
Intent intent = new Intent(context,NextActivity.class);
context.startActivity(intent);
另外,当我输入 context.startActivity()
时,android Studio 提示我添加 @RequiresPermission
,但是当我添加它时,它给了我一个错误。
UserAuthentication 类 -> 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);
在我调用类函数的活动中:
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();
);
【问题讨论】:
分享您的完整代码。 @Danish 我分享了我的代码,请帮助我 @VirenJoshi 这里的上下文是什么? @AADProgramming SignUpActivity,我将它的上下文传递给我的类构造函数并使其成为类变量 您能否提供 UserAuthentication 类的完整代码,尤其是在您分配上下文的地方 【参考方案1】:您可以尝试将 Activity Context 传递给您的 SignUp 参数。 如您所知,Intent 仅适用于当前的 Activity 上下文。
即
UserAuthentication userAuthentication = new UserAuthentication(SignUpActivity.this);
userAuthentication.SignUp(activityContext ,userName, userSignUpEmail, userPassword));
【讨论】:
我试过了,可惜没用 您可以在单击按钮时分享我的日志吗?请。 请确认整个SignUp函数是否在调用,也请在调用Intent后放入Log。无论它是否到达那里,。 我的 php 代码中有一个错误,它现在可以工作了。谢谢你的帮助 感谢 Viren,如果您觉得有帮助,请点赞或接受答案。【参考方案2】:Intent
和 startActivity()
中没有错误。 当我没有在我的 PHP 代码中传递任何内容时,我试图从 SharedPrefManager
中的 JSONObject 访问一个字符串。
这些语句工作得很好 -
Intent intent = new Intent(conext,NextActivity.class);
startActivity(intent);
【讨论】:
以上是关于从班级打开活动的主要内容,如果未能解决你的问题,请参考以下文章