Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法从静态上下文引用非静态方法startActivity(intent)_Android - Fatal编程技术网

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方法不需要是静态的吗?”--不需要。事实上,它很少是静态的。“什么是内存泄漏?”--