非静态方法 startActivity(intent) 不能从静态上下文引用



如果在适当的类中使用,那么静态上下文中的情况如何?

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 类中,该方法通过单击按钮调用。是否需要使用 Activity.startActivity 调用它?我看到的所有例子都只显示开始活动(意图(;顺便说一句,在任何人担心这不会上线或任何带有用户名和密码硬编码的东西之前,它只是为了测试。没有后端或数据库或任何连接的东西。

如果在适当的类中使用静态上下文,它如何?

因为该方法上有static关键字:

public static void verifyCredentials(View v)

强烈建议您从此类文件中删除所有出现的static。除了static方法的问题外,您的四个static字段还会泄漏内存。

最新更新