Android 无法从静态上下文引用非静态方法startActivity(intent)
如果它在适当的类中使用,它是如何从静态上下文中恢复的Android 无法从静态上下文引用非静态方法startActivity(intent),android,Android,如果它在适当的类中使用,它是如何从静态上下文中恢复的 Intent intent = new Intent(context, MainActivity.class ); startActivity(intent); 完整代码 package com.example.w3_p3; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.EditText;
Intent intent = new Intent(context, MainActivity.class );
startActivity(intent);
完整代码
package com.example.w3_p3;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.Button;
import android.view.View;
import android.widget.Toast;
import android.content.Context;
import android.content.Intent;
public class MainActivity extends AppCompatActivity {
static EditText username;
static EditText password;
static Button submit;
static Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
username = findViewById(R.id.usernameEdit);
password = findViewById(R.id.passwordEdit);
submit = findViewById(R.id.submitButton);
context = getApplicationContext();
}
public static void verifyCredentials(View v) {
if (username.getText().toString() == "username" && password.getText().toString() == "password") {
// load next activity
Intent intent = new Intent(context, MainActivity.class );
startActivity(intent);
}
else {
// display incorrect toast
CharSequence text = "Incorrect Username or Password";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
}
这一切都发生在我的MainActivity类中的一个方法中,该方法通过按钮onClick调用。是否需要使用Activity.startActivity调用它?我所看到的所有例子都显示了startActivity(意图);顺便说一句,在任何人担心这不会上线或任何用户名和密码硬编码的东西之前,这只是为了测试。没有后端、数据库或任何连接
如果它在适当的类中使用,它是如何从静态上下文中恢复的
Intent intent = new Intent(context, MainActivity.class );
startActivity(intent);
因为方法上有static
关键字:
public static void verifyCredentials(View v)
我强烈建议您从此类文件中删除所有出现的
static
。您的四个static
字段正在泄漏内存,另外还有static
方法的问题。您可以编辑您的问题并提供整个类吗?我已经在扩展AppCompatActivity,所以我不应该访问startActivity()?但是onClick方法不需要是静态的吗?什么是内存泄漏?按照您的建议删除静态修复了我的问题:)@swifthrow:“onClick方法不需要是静态的吗?”--不需要。事实上,它很少是静态的。“什么是内存泄漏?”--