【问题标题】: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 类的完整代码,尤其是在您分配上下文的地方

标签: android android-intent android-volley


【解决方案1】:

您可以尝试将 Activity Context 传递给您的 SignUp 参数。 如您所知,Intent 仅适用于当前的 Activity 上下文。

UserAuthentication userAuthentication = new UserAuthentication(SignUpActivity.this);
                 userAuthentication.SignUp(activityContext ,userName, userSignUpEmail, userPassword));

【讨论】:

  • 我试过了,可惜没用
  • 您可以在单击按钮时分享我的日志吗?请。
  • 请确认整个SignUp函数是否在调用,也请在调用Intent后放入Log。无论它是否到达那里,。
  • 我的 PHP 代码中有一个错误,它现在可以工作了。谢谢你的帮助
  • 感谢 Viren,如果您觉得有帮助,请点赞或接受答案。
【解决方案2】:

IntentstartActivity() 中没有错误。
当我没有在我的 PHP 代码中传递任何内容时,我试图从 SharedPrefManager 中的 JSONObject 访问一个字符串。
这些语句工作得很好 -

Intent intent = new Intent(conext,NextActivity.class);
startActivity(intent);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    相关资源
    最近更新 更多