Java 更改最终属性

Java 更改最终属性,java,android,eclipse,sqlite,sqliteopenhelper,Java,Android,Eclipse,Sqlite,Sqliteopenhelper,我有以下问题。我有两门课是从各种教程中抄来的。在一班,我有: public static final String BUDGET_AUSGABENART = "mood"; public static final String BUDGET_ZEIT = "timeMillis"; 在类BudgetRechneraAdapter中,它引用回这个字符串,我猜: long timeMillis = cursor.getLong(ciZeit); datum.setTime(time

我有以下问题。我有两门课是从各种教程中抄来的。在一班,我有:

public static final String BUDGET_AUSGABENART = "mood";
public static final String BUDGET_ZEIT = "timeMillis";
在类BudgetRechneraAdapter中,它引用回这个字符串,我猜:

long timeMillis = cursor.getLong(ciZeit);
        datum.setTime(timeMillis);
无论如何,当我试图更改字符串的名称、长变量的名称和设置时间时,我的android应用程序出现了一个错误。另外,字符串mood没有引用任何东西,这让我在更改命名时遇到错误

你知道我在哪里可以改名字吗

请查找下面两个类的编码

public class BudgetRechnerOpenHandler extends SQLiteOpenHelper {

    private static final String TAG = BudgetRechnerOpenHandler.class
            .getSimpleName();

    // Name und Version der Datenbank
    private static final String DATABASE_NAME = "budgetrechner.db";
    private static final int DATABASE_VERSION = 1;

    // Name und Attribute der Tabelle "Budget"
    public static final String _ID = "_id";
    public static final String TABELLE_NAME_BUDGET = "budget";
    public static final String BUDGET_ZEIT = "timeMillis";
    public static final String BUDGET_AUSGABENART = "mood";
    public static final String BUDGET_BETRAG = "betrag";

    // Konstanten für die Stimmungen
    public static final int BUDGET_ESSEN = 1;
    public static final int BUDGET_GETRAENK = 2;
    public static final int BUDGET_SONSTIGES = 3;


    // Tabelle Budget anlegen
    private static final String TABELLE_BUDGET_ERSTELLEN = "CREATE TABLE "
            + TABELLE_NAME_BUDGET + " (" + _ID
            + " INTEGER PRIMARY KEY AUTOINCREMENT, " + BUDGET_ZEIT + " INTEGER, "
            + BUDGET_BETRAG + " INTEGER," + BUDGET_AUSGABENART + " INTEGER);";
    // Tabelle Budget löschen
    private static final String TABELLE_BUDGET_DROP = "DROP TABLE IF EXISTS "
            + TABELLE_NAME_BUDGET;

    BudgetRechnerOpenHandler(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

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

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w(TAG, "Upgrade der Datenbank von Version " + oldVersion + " zu "
                + newVersion + "; alle Daten werden gelöscht");
        db.execSQL(TABELLE_BUDGET_DROP);
        onCreate(db);
    }

    public void insert(int art, String beschreibung, long zeit) {
        long rowId = -1;
        try {
            // Datenbank öffnen
            SQLiteDatabase db = getWritableDatabase();
            // die zu speichernden Werte
            ContentValues wert = new ContentValues();
            wert.put(BUDGET_AUSGABENART, art);
            wert.put(BUDGET_BETRAG, beschreibung);
            wert.put(BUDGET_ZEIT, zeit);
            // in die Tabelle Budget einfügen
            rowId = db.insert(TABELLE_NAME_BUDGET, null, wert);
        } catch (SQLiteException e) {
            Log.e(TAG, "insert()", e);
        } finally {
            Log.d(TAG, "insert(): rowId=" + rowId);
        }
    }

    public Cursor query() {
        // ggf. Datenbank öffnen
        SQLiteDatabase db = getWritableDatabase();
        return db.query(TABELLE_NAME_BUDGET, null, null, null, null, null,
                BUDGET_ZEIT + " DESC"
            );
    }

    public void update(long id, int ausgabe_art_zahl) {
        // ggf. Datenbank öffnen
        SQLiteDatabase db = getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(BUDGET_AUSGABENART, ausgabe_art_zahl);
        int numUpdated = db.update(TABELLE_NAME_BUDGET, values, _ID + " = ?",
                new String[] { Long.toString(id) });
        Log.d(TAG, "update(): id=" + id + " -> " + numUpdated);
    }

    public void delete(long id) {
        // ggf. Datenbank öffnen
        SQLiteDatabase db = getWritableDatabase();
        int numDeleted = db.delete(TABELLE_NAME_BUDGET, _ID + " = ?",
                new String[] { Long.toString(id) });
        Log.d(TAG, "delete(): id=" + id + " -> " + numDeleted);
    }
}


final
属性表示不能更改

如果要更改其值,只需在
变量中去掉
final


如果您因为删除
final
属性而出现问题,请随时发表评论。

我想在运行应用程序之前更改它,而不是之后。虽然我已经试过了,但是没有用。我想这一定和字符串的引用有关。。。无论如何,感谢您的帮助
我想在运行应用程序之前更改它,而不是之后更改它
对不起,我真的不理解您的意思…您可以自由更改变量(硬编码)的值,对吗?我也是这么想的,但不知何故我不能。当我在运行应用程序之前更改变量时,总是会出现错误。。。我不知道why@user3721905您是否知道您的
SQLite
列/表名中有这些词尾?您应该首先手动卸载应用程序,然后再次运行它以“刷新”SQLite,就是这样!真是个新手犯的错误。很抱歉,但是非常感谢你的帮助!
public class BudgetRechnerAdapter extends CursorAdapter {

    private final Date datum;

    private static final DateFormat DF_DATE = SimpleDateFormat
            .getDateInstance(DateFormat.MEDIUM);
    private static final DateFormat DF_TIME = SimpleDateFormat
            .getTimeInstance(DateFormat.MEDIUM);

    private Integer betrag;

    private static final Integer DF_BETRAG =0;
    private LayoutInflater inflator;
    private int ciAusgabenArt, ciZeit, ciBetrag;

    public BudgetRechnerAdapter(Context context, Cursor c) {
        super(context, c);
        datum = new Date();
        betrag = null;
        inflator = LayoutInflater.from(context);
        ciAusgabenArt = c.getColumnIndex(BudgetRechnerOpenHandler.BUDGET_AUSGABENART);
        ciZeit = c.getColumnIndex(BudgetRechnerOpenHandler.BUDGET_ZEIT);
        ciBetrag = c.getColumnIndex(BudgetRechnerOpenHandler.BUDGET_BETRAG);

    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        ImageView image = (ImageView) view.findViewById(R.id.icon);
        int art = cursor.getInt(ciAusgabenArt);
        TextView textView_art = (TextView) view.findViewById(R.id.text3);
        if (art == BudgetRechnerOpenHandler.BUDGET_ESSEN) {
            image.setImageResource(R.drawable.bild_essen);
            textView_art.setText("Essen");
        } else if (art == BudgetRechnerOpenHandler.BUDGET_GETRAENK) {
            image.setImageResource(R.drawable.bild_getraenk);
            textView_art.setText("Getränk");
        } else {
            image.setImageResource(R.drawable.bild_sonstiges);
            textView_art.setText("Sonstiges");
        }
        TextView textView_Datum = (TextView) view.findViewById(R.id.text1);
        TextView textView_Zeit = (TextView) view.findViewById(R.id.text2);

        long timeMillis = cursor.getLong(ciZeit);
        datum.setTime(timeMillis);
        textView_Datum.setText(DF_DATE.format(datum));
        textView_Zeit.setText(DF_TIME.format(datum));

        TextView textView_betrag = (TextView) view.findViewById(R.id.text4);
        int beschreibung = cursor.getInt(ciBetrag);
        betrag = beschreibung;
        textView_betrag.setText(betrag.toString());

    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        return inflator.inflate(R.layout.verlauf, null);
    }
}