首页 > 解决方案 > 如何使用 putExtra 从 Activity 向 Java 类发送数据?

问题描述

我想在登录成功后将用户名发送到另一个 Java 类。

这是我的 MainActivity.java 的一个片段:

    public class CheckLogin extends AsyncTask<String, String, String> {
        String msg ="";
        Boolean isSuccess = false;

        protected void onPreExecute() {

        }

        @Override
        protected String doInBackground(String... strings) {
            String username = loginUsername.getText().toString();
            String password = loginPassword.getText().toString();

            UserDetails ud = new UserDetails(username,password);

            if (DbConnectionClass.connection == null) {
                new DbConnectionClass().connectDB();
            }
            if (DbConnectionClass.connection != null) {
                Statement statement = null;
                try {
                    statement = DbConnectionClass.connection.createStatement();
                    ResultSet resultSet = statement.executeQuery("SELECT * FROM USERLOGINDETAILS_T WHERE user_name='"+ ud.getUsername() +"' AND user_password='"+ud.getPassword()+"'");
                    if(resultSet.next())
                    {

                        msg = "Login Successful";
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(MainActivity.this, msg, Toast.LENGTH_LONG).show();
                            }
                        });

                        isSuccess = true;
                        Intent startIntent = new Intent(getApplicationContext(), TabbedActivity.class);

                        //PROBLEM HERE
                        Intent i = new Intent(MainActivity.this, taobaoListAdapter.class);
                        i.putExtra("Key", username);
                        //***

                        startIntent.putExtra("UserLoginDetails", username); //send user details to tabbedactivity
                        startActivity(startIntent);
                    }
                    else if (username.trim().equals("") || password.trim().equals("")) {
                        msg = "Please Enter Username and Password";
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(MainActivity.this, msg, Toast.LENGTH_LONG).show();
                            }
                        });

                    }
                    else
                    {
                        msg = "Username or Password Incorrect";
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(MainActivity.this, msg, Toast.LENGTH_LONG).show();
                            }
                        });

                        isSuccess = false;
                    }
                }
                catch(SQLException e)
                {

                }

            }
            return msg;
        }
    }

但是在我的接收类中taobaoListAdapter.java,当我使用String s = getIntent().getExtras("UserLoginDetails");getIntent() 时显示错误。我相信这是由于 Java 类没有扩展 Activity。

我该如何解决这个问题?我已经查看了与我的类似的其他问题,但无法找到解决方案。

标签: javaandroid

解决方案


您需要将该类扩展到 appcompat 活动。您正在将数据发送到适配器。尝试在 appcompat 活动中获取数据并使用构造函数将其传输到适配器。


推荐阅读