2014-11-15 75 views
0

我遇到以下問題。我從各種教程中複製了兩個類。在一個I類有:更改最終屬性

public static final String BUDGET_AUSGABENART = "mood"; 
public static final String BUDGET_ZEIT = "timeMillis"; 

在課堂BudgetRechnerAdapter它引用回到這個字符串我猜:

long timeMillis = cursor.getLong(ciZeit); 
     datum.setTime(timeMillis); 

反正當我試圖改變字符串的名稱,並更改名稱長變量和setTime我得到我的Android應用程序錯誤。此外,字符串心情,這是不引用任何東西,讓我遇到一個錯誤,當我改變命名。

任何想法,我可以改變命名?

請在下面找到2類的編碼。

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); 
    } 
} 

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); 
    } 
} 

回答

0

final屬性意味着它不能被改變。

如果要更改其值,只需在variable中刪除final即可。

隨意評論,如果您有側面問題,因爲刪除final屬性。

+0

我想在運行應用程序之前更改它,而不是之後。儘管我已經嘗試過了,但沒有奏效。我認爲它必須與字符串的引用有關......感謝幫助無論如何 – user3721905

+0

'我想在運行應用程序之前更改它,而不是之後'對不起,我不真正瞭解你......你可以自由地改變變量的值(硬編碼)吧? –

+0

這就是我的想法,但不知何故我不能。當我在運行應用程序之前更改變量時,我總是收到錯誤...我不知道爲什麼 – user3721905