Java 代码没有在 Android Studio 中启动新活动?和上下文有关吗?

Posted

技术标签:

【中文标题】Java 代码没有在 Android Studio 中启动新活动?和上下文有关吗?【英文标题】:Java code not starting new activity in Android Studio? Is it to do with the context? 【发布时间】:2021-08-20 02:13:24 【问题描述】:

代码如下:

public void check(View button) //checks if user's username and password correct
    String usernameInput;
    String passwordInput;

    usernameInput = ((EditText)findViewById(R.id.username)).getText().toString(); //gets user inputs as strings
    passwordInput = ((EditText)findViewById(R.id.password)).getText().toString();

    Log.d("username input", usernameInput);
    Log.d("password input", passwordInput);

    if (usernameInput == "user" && passwordInput == "password123")  //checks if correct
        correct(usernameInput);
    
    else incorrect(button);



public void correct(String usernameInput)  //if correct, launches the main activity (main menu) through an intent (see below)
    Intent i = new Intent(this, MainActivity.class);
    i.putExtra("username", usernameInput); //passes data from LoginRegister activity to MainActivity
    startActivity(i);

我正在尝试创建一个登录系统。基本上,当单击按钮时,会调用“检查”方法。检查来自 2 个文本框的用户输入以查看它们是否是正确的用户名和密码;如果是,则调用“正确”方法。到目前为止它工作正常,但由于某种原因,新活动没有开始(没有错误,它只是没有开始)。我已经尝试在Intent i = new Intent(this, MainActivity.class); 行中放置各种上下文,但似乎没有任何效果。请帮忙。

【问题讨论】:

使用usernameInput.equals( "user") 而不是usernameInput == "user"。在 Java 中,== 检查它们是否是同一个对象而不是它们的相等性。对密码也做同样的事情 @Amin 我的上帝,它有效.. 比预期的要容易,谢谢 【参考方案1】:

您应该使用equals 而不是==

== 应在参考比较期间使用。 == 检查两个引用是否指向相同的位置。另一方面,equals() 方法应该用于内容比较。 equals() 方法评估内容以检查相等性。

所以你应该把你的代码改成:

public void check(View button) //checks if user's username and password correct
    String usernameInput;
    String passwordInput;

    usernameInput = ((EditText)findViewById(R.id.username)).getText().toString(); //gets user inputs as strings
    passwordInput = ((EditText)findViewById(R.id.password)).getText().toString();

    Log.d("username input", usernameInput);
    Log.d("password input", passwordInput);

    if (usernameInput.equals("user") && passwordInput.equals("password123"))  //checks if correct
        correct(usernameInput);
    
    else incorrect(button);


【讨论】:

以上是关于Java 代码没有在 Android Studio 中启动新活动?和上下文有关吗?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Android Studio 中调试 C/C++?

Android Studio编译并集成SO文件

Android studio 加载Java和资源文件出错

在Android studio中使用活动模板时,我无法添加新的Java类吗?

不是封闭类错误 Android Studio

不是封闭的类错误Android Studio