将数据库值传递给变量

时间:2019-01-10 20:24:52

标签: java android database sqlite

我很少在这里问这个问题,所以首先对不起我的问题在这里是可读还是不允许的。所以我在这里要做的就是将LoginActivity的用户名传递给HomeActivity的player1变量。这是HomeActivity.java类的代码

public class HomeActivity extends Activity {
    TextView NameTxt;
    TextView CoinTxt;
    TextView GemTxt;

    String p1name = player1.getName();
    int p1coin = player1.getCoins();
    int p1gem = player1.getGems();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

   setContentView(R.layout.main_screen);

//////TV declare///////

       NameTxt = (TextView)findViewById(R.id.playerName);
       CoinTxt = (TextView)findViewById(R.id.cointxt);
       GemTxt = (TextView)findViewById(R.id.gemtxt);

       NameTxt.setText(p1name);
       CoinTxt.setText("Coin: " +p1coin);
       GemTxt.setText("Gem: " +p1gem);
   }
}

这是LoginActivity.class

public class LoginActivity extends Activity {

    EditText edit1;
    EditText edit2;
    EditText edit3;

    Button registerBtn;
    Button loginBtn;

    DatabaseHelper myDb;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//Set fullscreen and no title//////////
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);

///////////////////////////////////////
        setContentView(R.layout.login_screen);

        edit1 = (EditText)findViewById(R.id.editpname);
        edit2 = (EditText)findViewById(R.id.editpemail);
        edit3 = (EditText)findViewById(R.id.editppw);

        registerBtn = (Button)findViewById(R.id.registerbtn);
        loginBtn = (Button)findViewById(R.id.loginbtn);

        myDb = new DatabaseHelper(this);

         loginBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (validate()) {
                    String Email = edit2.getText().toString();
                    String Password = edit3.getText().toString();

                    User currentUser = myDb.Authenticate(new User(null, null, Email, Password));

                        if (currentUser != null) {
                            System.out.println("Successfull");

                            Intent intent = new Intent(getApplicationContext(),HomeActivity.class);
                            startActivity(intent);
                            finish();
                        } else {

                           System.out.println("Unsuccessfull");

                        }
                    }
                }
            });

            registerBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    if (validate()) {
                        String UserName = edit1.getText().toString();
                        String Email = edit2.getText().toString();
                        String Password = edit3.getText().toString();

                        if (!myDb.isEmailExists(Email)) {
                                myDb.addUser(player1);
                            public User player1 = new User(null, UserName, Email, Password);
                        }
                    } 
                }
            });
        }

        public boolean validate() {
            boolean valid = false;
            String Email = edit2.getText().toString();
            String Password = edit3.getText().toString();

            if (!android.util.Patterns.EMAIL_ADDRESS.matcher(Email).matches()) {
                valid = false;
                 edit2.setError("Please enter valid email!");
            } else {
                valid = true;
                 edit2.setError(null);
            }

            if (Password.isEmpty()) {
                valid = false;
                  edit3.setError("Please enter valid password!");
           } else {
               if (Password.length() > 5) {
               valid = true;
               edit3.setError(null);
           } else {
               valid = false;
                 edit3.setError("Password is to short!");
           }
       } 
       return valid;
   }  

}

我还有一个简单的User.java类

String id;
String userName;
String email;
String password;
int coins;
int gems;

public User(String id, String userName, String email, String password) {

    this.id = id;
    this.email = email;
   //And so on. Don't mind this

}

public String getName() {
    return this.userName;
}

public int getCoins() {
    return this.coins;
}

public int getGems() {
    return this.gems;
}

为了便于阅读,我编写了短代码。 我收到一个错误 myDb.addUser(player1); 还有它下面的那个。

我只是想使播放器名称等于数据库中Username的值。还有硬币和宝石。你们可以帮我弄清楚如何传递价值的想法吗?我花了整整3天的时间找到解决此问题的方法。而且这真让我震惊。所以也许你们可以帮助我

2 个答案:

答案 0 :(得分:0)

我将执行以下操作:

    ...
    Intent intent = new Intent(getApplicationContext(),HomeActivity.class);
        intent.putExtra("username", Bob)
        startActivity(intent);
        finish();
    ...

然后在家里有

    Intent intent = getIntent();
    String easyPuzzle = intent.getExtras().getString("username");

答案 1 :(得分:0)

忽略数据库内容,并假设LoginActivity是从另一个活动(MainActivity)启动的,那么您可以改写以下内容,并传递Username和UserId(例如,然后从数据库中获取HomeActivity中的任何其他数据)。

因此,这在启动时立即调用 LoginActivity

点击登录(类似于从数据库获取用户和ID)开始 HomeActivity ,并通过Intent Extras传递用户名和用户ID。

HomeActivity 显示用户名和用户ID,以及一个完成按钮。

单击完成按钮返回,将其返回堆栈(完成时跳过skippng LoginActivity)回到 MainActivity ,该操作将TextView从< strong> Hello World 更改为 Welcome Back (欢迎回来)。

MainActivity.java:-

public class MainActivity extends AppCompatActivity {

    TextView mMessage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mMessage = this.findViewById(R.id.message);

        // Immediately start Login Activity
        Intent i = new Intent(MainActivity.this,LoginActivity.class);
        startActivity(i);
    }

    @Override
    protected void onResume() {
        super.onResume();
        mMessage.setText("Welcome back");
    }
}

LoginActivity.java:-

public class LoginActivity extends AppCompatActivity {

    public static final String INTENTKEY_USERNAME = "IK_USERNAME";
    public static final String INTENTKEY_USERID = "IK_USERID";

    Button mloginbtn;
    Context mContext;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        mContext = this;
        mloginbtn = this.findViewById(R.id.loginbtn);
        mloginbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(mContext,HomeActivity.class);
                i.putExtra(INTENTKEY_USERNAME,"Fred");
                i.putExtra(INTENTKEY_USERID,99L);
                startActivity(i);
                finish();
            }
        });
    }
}

HomeActivity.java

public class HomeActivity extends AppCompatActivity {

    TextView mUsername, muserid;
    Button mDone;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        mUsername = this.findViewById(R.id.username);
        muserid = this.findViewById(R.id.userid);
        mDone = this.findViewById(R.id.done);
        mDone.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });

        Intent i = this.getIntent();
        mUsername.setText(i.getStringExtra(LoginActivity.INTENTKEY_USERNAME));
        muserid.setText(String.valueOf(i.getLongExtra(LoginActivity.INTENTKEY_USERID,0)));
    }
}