Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.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 无法解决活动中的变量错误_Android - Fatal编程技术网

Android 无法解决活动中的变量错误

Android 无法解决活动中的变量错误,android,Android,我试图检查数据库中是否引入了几个值。我定义了一个SQLHelper类和活动。我正在尝试从活动访问SQLHelper类中的变量,但无法访问,因为出现以下错误: 无法解析longitud 无法解析的变量有:nombre、longitud、latitud 守则: SQLOpenHelper: package com.app.mapa; import android.content.Context; import android.database.sqlite.SQLiteDatabase; impo

我试图检查数据库中是否引入了几个值。我定义了一个SQLHelper类和活动。我正在尝试从活动访问SQLHelper类中的变量,但无法访问,因为出现以下错误:

无法解析longitud

无法解析的变量有:nombre、longitud、latitud

守则:

SQLOpenHelper:

package com.app.mapa;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;


public class Bdoh extends SQLiteOpenHelper
{
SQLiteOpenHelper sbd;
static String T_NOMBRE="lugares"; //para el content provider
private static final String NOMBRE_BD = "Sitios";
private static final int VER_BD = 1;
private static final String bdcons = "CREATE TABLE " + T_NOMBRE + 
"(_id INTEGER PRIMARY KEY AUTOINCREMENT, nombre TEXT, descripcion TEXT, latitud  
    DOUBLE, " + "longitud DOUBLE, foto TEXT)";

    public Bdoh(Context context) 
{
    super(context, NOMBRE_BD, null, VER_BD);
    SQLiteDatabase  
            db=context.openOrCreateDatabase(NOMBRE_BD,Context.MODE_PRIVATE,null); 

}

@Override
public void onCreate(SQLiteDatabase db) 
{
    db.execSQL(bdcons);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
{
      db.execSQL("DROP TABLE IF EXISTS lugares");
      db.execSQL(bdcons);
    }
}
活动:

public boolean iguales()
{
    boolean ig = false;
    Uri urititl = MCProvider.CP_URI;
    Cursor c = getContentResolver().query(urititl,null,null,null,null);
    c.moveToFirst();
    if(c.moveToFirst())
     {
        if((titlugar.equals(c.getString(c.getColumnIndex(boh.nombre))))  
                      &&  (lat.equals(c.getDouble(c.getColumnIndex(boh.latitud)))) && 
                      (lgt.equals(c.getDouble(bdoh.longitud)))) 
        ig = true;
        else ig = false;
     }

    return ig;
}
我如何访问它们


谢谢。

假设代码中的“boh”和“bdoh”是类型为
bdoh
的对象

无法解析您提到的变量,因为您的
Bdoh
class没有具有该名称的成员变量。因此,以下措施无法奏效:

if((titlugar.equals(c.getString(c.getColumnIndex(boh.nombre))))  // boh.nombre does not exist
您需要为
Bdoh
类定义这些成员变量,然后才能这样使用它们

例如:

public class Bdoh extends SQLiteOpenHelper {

    public String nombre;
    public String latitud;
    // and so on...
}
请尝试正确设置代码和问题的格式


还请注意,我认为您在这里“练习”的风格非常糟糕,应该通过getter和setter方法来完成,或者通常以完全不同的方式来完成。因为我不想解释整个OOP概念,所以我只能推荐阅读有关面向对象编程的教程。

@JustinJasmann请思考。如果存在变量未解析错误,OP应该如何获取logcat?很抱歉,我假设未解析变量位于
bdcons
字符串变量内,引用数据库列,这将在运行时发生。@JustinJasmann运行时永远不会发生未解决的变量错误。@Simon不包含该字段的数据库上的
select
语句如何?@JustinJasmann则会出现“column not exist”异常。正如我所说的,不可能在运行时获取未解析的变量,因为这是一个编译器错误。您将无法使用未解析的变量进行生成。是。但我想做的是访问名为nombre、longitud和latitud的数据库字段,我不知道怎么做。如果我定义了它们,如何将它们绑定到数据库字段?错误已修复。我使用getContentResolver和字符串进行查询。