如何解决静态上下文中的非静态方法错误?

How to resolve non-static method errors from static context?

我明白了,实际上它在旧版本中是 运行ning 但在 Android 2.2 中不是 运行ning 这是代码...我不知道该怎么做将其替换为或有替代品。 所以我添加了整个代码以便能够理解真实的。我在 android studio 的旧版本 运行 上看到了这个问题。

public class DatabaseHelper extends SQLiteOpenHelper {
    public static final String Database_Name= "student.db";
    public static final String Table_Name= "student_table";
    public static final String COL_1= "id";
    public static final String COL_2= "name";
    public static final String COL_3= "surname";
    public static final String COL_4= "marks";

    public DatabaseHelper(Context context){
        super(context, Database_Name,null,1);
    }


    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table" + Table_Name +  " (id integer primary key auto increment, name text, surname text, marks ineteger)" );
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("drop table if exists" + Table_Name);
        onCreate(db);
    }

    public boolean insertData(String name, String surname, String marks){
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();

        ContentValues.put(COL_2,name);
        ContentValues.put(COL_3,surname);
        ContentValues.put(COL_4,marks);

        long result = db.insert(Table_Name, null,contentValues);
        if (result==-1) {
            return false;
        } else {
            return true;
        }
    }
}

发生此错误是因为您混淆了 class.

的静态和非静态部分

举个例子:

public class Test {
    public String testVariable = "Honk";

    public static String methodTest() {
        return testVariable;
    }

    public static String methodTest2() {
        Test test = new Test();
        return test.testVariable;
    }

    public String methodTest3() {
        return testVariable;
    }
}

方法测试

此测试将失败。您正在尝试从静态上下文 methodTest().

获取非静态变量 testVariable

访问方式:

String result = Test.methodTest();

方法测试2

这行得通。您正在创建一个新的 Test class 实例,您可以正常访问变量 testVariable

访问方式:

String result = Test.methodTest2();

方法测试 3

这行得通。您正在从非静态上下文 methodTest3().

访问非静态变量 testVariable

访问方式:

Test test = new Test(); 
String result = test.methodTest();

分辨率

在没有看到您的其余代码的情况下,很难就更改内容向您提出建议。您在问题中提供的代码不太可能是罪魁祸首。

编辑

您的问题是您正在静态访问 ContentValues class...

ContentValues.put(COL_2,name);

您需要使用您创建的变量:contentValues