ANDROID/ SQLITE Program który będzie dodawał przypomnienia do bazy danych SQLite

0

Witam, piszę program w eclipse, który będzie dodawał dane z formularza do bazy danych. Mam tylko 2 pola do dodania data i komentarz. Program odpala się wpisuje wszystkie dane do formularza i po kliknięciu przycisku który dodaje dane do bazy wyskakuje komunikat "Aplikacja została zatrzymana"
Może powiecie mi co źle zrobiłem poniżej zamieszczam kody źródłowe:

 package com.example.database;

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

public class DatabaseHandler extends SQLiteOpenHelper {

	// All Static variables
	// Database Version
	private static final int DATABASE_VERSION = 1;

	// Database Name
	private static final String DATABASE_NAME = "tankDatabase";

	// Contacts table name
	
	public static final String TABLE_MEMORIES = "memories";

	// Contacts Table Columns names
	public static final String COLUMN_MEM_ID = "memID";
	public static final String COLUMN_MEM_DATE = "memDATE";
	public static final String COLUMN_MEM_NOTE = "memNOTE";
	public DatabaseHandler(Context context) {
		super(context, DATABASE_NAME, null, DATABASE_VERSION);
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		
		String CREATE_MEMORIES_TABLE = "CREATE TABLE " + TABLE_MEMORIES + "("
				+ COLUMN_MEM_ID + " INTEGER PRIMARY KEY," + COLUMN_MEM_DATE + " TEXT,"
				+ COLUMN_MEM_NOTE + " TEXT," + ")";
		db.execSQL(CREATE_MEMORIES_TABLE);

	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// Drop older table if existed
		db.execSQL("DROP TABLE IF EXISTS " + TABLE_MEMORIES);

		// Create tables again
		onCreate(db);

	}

}
 package com.example.database.memories;

public class MemBean {

	private int memID;
	private String memDATE;
	private String memNOTE;
	

	public MemBean(int memID, String memDATE, String memNOTE) {
		this.memID = memID;
		this.memDATE = memDATE;
		this.memNOTE = memNOTE;
		
	}
	
	public MemBean() {

	}

	public int getMemID() {
		return memID;
	}

	public void setMemID(int memID) {
		this.memID = memID;
	}

	public String getMemDATE() {
		return memDATE;
	}

	public void setMemDATE(String memDATE) {
		this.memDATE = memDATE;
	}

	public String getMemNOTE() {
		return memNOTE;
	}

	public void setMemNOTE(String memNOTE) {
		this.memNOTE = memNOTE;
	}

	public MemBean(String memDATE, String memNOTE) {
		this.memDATE = memDATE;
		this.memNOTE = memNOTE;
	}

	
	
}
 package com.example.database.memories;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

import com.example.database.DatabaseHandler;
import com.example.database.memories.MemBean;



public class MemDao {
	private SQLiteDatabase database;
	private final DatabaseHandler dbHandler;
	private final String[] allMemColumns = { DatabaseHandler.COLUMN_MEM_ID,
			DatabaseHandler.COLUMN_MEM_DATE, DatabaseHandler.COLUMN_MEM_NOTE };

	public MemDao(Context context) {
		dbHandler = new DatabaseHandler(context);
	}

	public void open() throws SQLException {
		database = dbHandler.getWritableDatabase();
	}

	public void close() {
		dbHandler.close();
	}

	public void addMem(MemBean memBean) {
		ContentValues values = new ContentValues();
		values.put(DatabaseHandler.COLUMN_MEM_DATE, memBean.getMemDATE());
		values.put(DatabaseHandler.COLUMN_MEM_NOTE, memBean.getMemNOTE());
		

		// Inserting Row
		database.insert(DatabaseHandler.TABLE_MEMORIES, null, values);

	}

	public MemBean getMem(int id) {
		Cursor cursor = database.query(DatabaseHandler.TABLE_MEMORIES,
				allMemColumns, DatabaseHandler.COLUMN_MEM_ID + "=?",
				new String[] { String.valueOf(id) }, null, null, null, null);
		if (cursor != null) {
			cursor.moveToFirst();
		}

		MemBean mem = new MemBean(Integer.parseInt(cursor.getString(0)),
				cursor.getString(1), cursor.getString(2));
		// return contact
		return mem;

	}

	public List<MemBean> getAllMems() {
		List<MemBean> memList = new ArrayList<MemBean>();
		// Select All Query
		String selectQuery = "SELECT  * FROM " + DatabaseHandler.TABLE_MEMORIES;

		Cursor cursor = database.rawQuery(selectQuery, null);

		// looping through all rows and adding to list
		if (cursor.moveToFirst()) {
			do {
				MemBean mem = new MemBean();
				mem.setMemID(Integer.parseInt(cursor.getString(0)));
				mem.setMemDATE(cursor.getString(1));
				mem.setMemNOTE(cursor.getString(2));
				
				// Adding contact to list
				memList.add(mem);
			} while (cursor.moveToNext());
		}
		return memList;
	}

	public int updateMem(MemBean mem, int memID) {
		ContentValues values = new ContentValues();
		values.put(DatabaseHandler.COLUMN_MEM_DATE, mem.getMemDATE());
		values.put(DatabaseHandler.COLUMN_MEM_NOTE, mem.getMemNOTE());
		

		return database.update(DatabaseHandler.TABLE_MEMORIES, values,
				DatabaseHandler.COLUMN_MEM_ID + "=" + memID, null);
	}

	public int deleteMem(int memID) {
		return database.delete(DatabaseHandler.TABLE_MEMORIES,
				DatabaseHandler.COLUMN_MEM_ID + "=?",
				new String[] { String.valueOf(memID) });
	}
}

 
 package com.example.samochodspalanieiwydatki;

import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import com.example.database.memories.MemBean;
import com.example.database.memories.MemDao;

public class PrzypomnienieActivity extends Activity {
	private EditText memDATE;
	private EditText memNOTE;
	
	private Button addMem;
	private MemDao database;

	
	
	
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_przypomnienie);
        
        memDATE= (EditText) findViewById(R.id.mdate);
        memNOTE = (EditText) findViewById(R.id.mopis);
        
        addMem = (Button) findViewById(R.id.addMem);
        database.open();
        List<MemBean> memList = database.getAllMems();
        database.close();
        
        addMem.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				MemBean mem = new MemBean();
				String date = memDATE.getText().toString();
				mem.setMemDATE(date);
				String note = memNOTE.getText().toString();
				mem.setMemNOTE(note);
				
				
				

				database.open();

				database.addMem(mem);
				;

				database.close();
				

			}
		});

	

	}
} 
0

Nikomu sie pewnie nie bedzie chcialo sprawdzac calego kodu. Ale, jak dostajesz taki komunikat jak dostajesz to znaczy, ze gdzies jest rzucany wyjatek i zabija aplikacje. Zobacz w Logcat co to za wyjatek, i albo bedziesz wiedzial co i jak, ale zapodaj go tutaj.

0

treść z logcat:

07-21 18:49:33.710: I/ActivityManager(149): START {cmp=com.example.samochodspalanieiwydatki/.PrzypomnienieActivity u=0} from pid 613
07-21 18:49:34.753: W/EGL_emulation(613): eglSurfaceAttrib not implemented
07-21 18:49:35.071: I/ActivityManager(149): Displayed com.example.samochodspalanieiwydatki/.PrzypomnienieActivity: +1s248ms
07-21 18:49:41.580: D/dalvikvm(149): GC_CONCURRENT freed 680K, 11% free 11707K/13127K, paused 39ms+33ms, total 274ms
07-21 18:49:50.640: D/InputEventConsistencyVerifier(613): KeyEvent: ACTION_UP but key was not down.
07-21 18:49:50.640: D/InputEventConsistencyVerifier(613):   in android.widget.EditText@416f8c80
07-21 18:49:50.640: D/InputEventConsistencyVerifier(613):   0: sent at 202113000000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_TAB, scanCode=15, metaState=0, flags=0x8, repeatCount=0, eventTime=202113, downTime=202009, deviceId=0, source=0x301 }
07-21 18:49:59.241: D/AndroidRuntime(613): Shutting down VM
07-21 18:49:59.241: W/dalvikvm(613): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
07-21 18:49:59.301: E/AndroidRuntime(613): FATAL EXCEPTION: main
07-21 18:49:59.301: E/AndroidRuntime(613): java.lang.NullPointerException
07-21 18:49:59.301: E/AndroidRuntime(613): 	at com.example.samochodspalanieiwydatki.PrzypomnienieActivity$1.onClick(PrzypomnienieActivity.java:50)
07-21 18:49:59.301: E/AndroidRuntime(613): 	at android.view.View.performClick(View.java:4084)
07-21 18:49:59.301: E/AndroidRuntime(613): 	at android.view.View$PerformClick.run(View.java:16966)
07-21 18:49:59.301: E/AndroidRuntime(613): 	at android.os.Handler.handleCallback(Handler.java:615)
07-21 18:49:59.301: E/AndroidRuntime(613): 	at android.os.Handler.dispatchMessage(Handler.java:92)
07-21 18:49:59.301: E/AndroidRuntime(613): 	at android.os.Looper.loop(Looper.java:137)
07-21 18:49:59.301: E/AndroidRuntime(613): 	at android.app.ActivityThread.main(ActivityThread.java:4745)
07-21 18:49:59.301: E/AndroidRuntime(613): 	at java.lang.reflect.Method.invokeNative(Native Method)
07-21 18:49:59.301: E/AndroidRuntime(613): 	at java.lang.reflect.Method.invoke(Method.java:511)
07-21 18:49:59.301: E/AndroidRuntime(613): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
07-21 18:49:59.301: E/AndroidRuntime(613): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-21 18:49:59.301: E/AndroidRuntime(613): 	at dalvik.system.NativeStart.main(Native Method)
07-21 18:49:59.361: W/ActivityManager(149):   Force finishing activity com.example.samochodspalanieiwydatki/.PrzypomnienieActivity
07-21 18:49:59.960: W/ActivityManager(149): Activity pause timeout for ActivityRecord{4156d2c8 com.example.samochodspalanieiwydatki/.PrzypomnienieActivity}
07-21 18:50:03.560: I/Process(613): Sending signal. PID: 613 SIG: 9
07-21 18:50:03.590: I/WindowState(149): WIN DEATH: Window{415851a8 com.example.samochodspalanieiwydatki/com.example.samochodspalanieiwydatki.MainActivity paused=false}
07-21 18:50:03.590: I/ActivityManager(149): Process com.example.samochodspalanieiwydatki (pid 613) has died.
07-21 18:50:03.611: W/InputDispatcher(149): channel '41605278 com.example.samochodspalanieiwydatki/com.example.samochodspalanieiwydatki.PrzypomnienieActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0x9
07-21 18:50:03.611: E/InputDispatcher(149): channel '41605278 com.example.samochodspalanieiwydatki/com.example.samochodspalanieiwydatki.PrzypomnienieActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
07-21 18:50:03.682: I/WindowState(149): WIN DEATH: Window{41605278 com.example.samochodspalanieiwydatki/com.example.samochodspalanieiwydatki.PrzypomnienieActivity paused=false}
07-21 18:50:03.682: W/InputDispatcher(149): Attempted to unregister already unregistered input channel '41605278 com.example.samochodspalanieiwydatki/com.example.samochodspalanieiwydatki.PrzypomnienieActivity (server)'
07-21 18:50:03.701: W/ActivityManager(149): Force removing ActivityRecord{41437100 com.example.samochodspalanieiwydatki/.MainActivity}: app died, no saved state
07-21 18:50:03.741: I/WindowManager(149): WINDOW DIED Window{41605278 com.example.samochodspalanieiwydatki/com.example.samochodspalanieiwydatki.PrzypomnienieActivity paused=false}
07-21 18:50:03.980: W/EGL_emulation(262): eglSurfaceAttrib not implemented
07-21 18:50:04.360: W/InputMethodManagerService(149): Got RemoteException sending setActive(false) notification to pid 613 uid 10044
07-21 18:50:06.590: D/InputEventConsistencyVerifier(262): KeyEvent: ACTION_UP but key was not down.
07-21 18:50:06.590: D/InputEventConsistencyVerifier(262):   in com.android.internal.policy.impl.PhoneWindow$DecorView@4124b638
07-21 18:50:06.590: D/InputEventConsistencyVerifier(262):   0: sent at 218115000000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_DPAD_DOWN, scanCode=108, metaState=0, flags=0x8, repeatCount=0, eventTime=218115, downTime=218115, deviceId=0, source=0x301 }
07-21 18:50:06.830: D/InputEventConsistencyVerifier(262): KeyEvent: ACTION_UP but key was not down.
07-21 18:50:06.830: D/InputEventConsistencyVerifier(262):   in com.android.launcher2.Workspace@412c67e0
07-21 18:50:06.830: D/InputEventConsistencyVerifier(262):   0: sent at 218151000000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_DPAD_DOWN, scanCode=108, metaState=0, flags=0x8, repeatCount=0, eventTime=218151, downTime=218151, deviceId=0, source=0x301 }
07-21 18:50:06.910: D/dalvikvm(262): GC_FOR_ALLOC freed 567K, 9% free 10627K/11655K, paused 55ms, total 66ms
07-21 18:50:07.010: D/InputEventConsistencyVerifier(262): KeyEvent: ACTION_UP but key was not down.
07-21 18:50:07.010: D/InputEventConsistencyVerifier(262):   in com.android.launcher2.Hotseat@412fbce8
07-21 18:50:07.010: D/InputEventConsistencyVerifier(262):   0: sent at 218202000000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_DPAD_DOWN, scanCode=108, metaState=0, flags=0x8, repeatCount=0, eventTime=218202, downTime=218202, deviceId=0, source=0x301 }
 
0

Gdzie tworzysz obiekt database (MemDAO) ? Z tego co widzę to już podczas odpalenia powinno się wysypać.

0

cała baza tworzona jest w klasie DatabaseHandler. A klasa MemDAO odpowiedzialna jest za zapisywanie do bazy i odczyt

0

Chodzi mi o pole 'database' w klasie PrzypomnienieActivity. Wywolujesz metody na obiekcie niezainicjalizowanym (chyba, że nie przekleiłeś całego kodu);

0

nie no wkleiłem cały kod. Tam tylko taką pierdołe zakomentowaną usunąłem ale to nie ma wpływu :P

Czyli cóż ja mam poczynić teraz??

1

W metodzie onCreate() pod setContentView(...)

database = new MemDao(this);
0

No aplikacja już się nie wysypuje, ale powstaje nowy problem. Błąd przy zapisywaniu

07-22 16:49:36.498: E/SQLiteLog(635): (1) no such table: memories
07-22 16:49:36.598: E/SQLiteDatabase(635): Error inserting memNOTE=oc memDATE=04-06-2015
07-22 16:49:36.598: E/SQLiteDatabase(635): android.database.sqlite.SQLiteException: no such table: memories (code 1): , while compiling: INSERT INTO memories(memNOTE,memDATE) VALUES (?,?)
07-22 16:49:36.598: E/SQLiteDatabase(635): 	at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
07-22 16:49:36.598: E/SQLiteDatabase(635): 	at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882)
07-22 16:49:36.598: E/SQLiteDatabase(635): 	at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493)
07-22 16:49:36.598: E/SQLiteDatabase(635): 	at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
07-22 16:49:36.598: E/SQLiteDatabase(635): 	at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
07-22 16:49:36.598: E/SQLiteDatabase(635): 	at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
07-22 16:49:36.598: E/SQLiteDatabase(635): 	at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467)
07-22 16:49:36.598: E/SQLiteDatabase(635): 	at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
07-22 16:49:36.598: E/SQLiteDatabase(635): 	at com.example.database.memories.MemDao.addMem(MemDao.java:42)
07-22 16:49:36.598: E/SQLiteDatabase(635): 	at com.example.samochodspalanieiwydatki.PrzypomnienieActivity$1.onClick(PrzypomnienieActivity.java:53)
07-22 16:49:36.598: E/SQLiteDatabase(635): 	at android.view.View.performClick(View.java:4084)
07-22 16:49:36.598: E/SQLiteDatabase(635): 	at android.view.View$PerformClick.run(View.java:16966)
07-22 16:49:36.598: E/SQLiteDatabase(635): 	at android.os.Handler.handleCallback(Handler.java:615)
07-22 16:49:36.598: E/SQLiteDatabase(635): 	at android.os.Handler.dispatchMessage(Handler.java:92)
07-22 16:49:36.598: E/SQLiteDatabase(635): 	at android.os.Looper.loop(Looper.java:137)
07-22 16:49:36.598: E/SQLiteDatabase(635): 	at android.app.ActivityThread.main(ActivityThread.java:4745)
07-22 16:49:36.598: E/SQLiteDatabase(635): 	at java.lang.reflect.Method.invokeNative(Native Method)
07-22 16:49:36.598: E/SQLiteDatabase(635): 	at java.lang.reflect.Method.invoke(Method.java:511)
07-22 16:49:36.598: E/SQLiteDatabase(635): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
07-22 16:49:36.598: E/SQLiteDatabase(635): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-22 16:49:36.598: E/SQLiteDatabase(635): 	at dalvik.system.NativeStart.main(Native Method)
 

I chyba coś tutaj jest źle:
database.insert(DatabaseHandler.TABLE_MEMORIES, null, values);

0
 addMem.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MemBean mem = new MemBean();
                String date = memDATE.getText().toString();
                mem.setMemDATE(date);
                String note = memNOTE.getText().toString();
                mem.setMemNOTE(note);
 
 
 
 
                database.open();
 
                database.addMem(mem);
                ;
 
                database.close();

**Nie wiem co ja robię źle... Po kliknieciu pobieram dane z formularza "otwieram bazę danych" **

public void open() throws SQLException {
		database = dbHandler.getWritableDatabase();
	}

**i dodaję dane do bazy danych. **

public void addMem(MemBean memBean) {
		ContentValues values = new ContentValues();
		values.put(DatabaseHandler.COLUMN_MEM_DATE, memBean.getMemDATE());
		values.put(DatabaseHandler.COLUMN_MEM_NOTE, memBean.getMemNOTE());
		

		// Inserting Row
		database.insert(DatabaseHandler.TABLE_MEMORIES, null, values);

	}
0

Witam ponownie. Na swojej drodze napotkałem kolejny problem. A mianowicie chcę wyświetlić dane z bazy danych w tabeli. Tabela tworzyć się ma dynamicznie.

Pierwszy wiersz TableRow tr_head zawiera tylko opisy kolumn i to się ładnie wyświetla jeżeli reszta jest zakomentowana(w kodzie podane od którego miejsca) i stworzyłem Stringa który będzie wyświetlał w logcat czy dane pobierają się z bazy i wyszystko się ładnie wyświetla w logach. Jeżeli odkomentuję drugą część która zawiera wiersze które pobierają dane z bazy. wywala się błąd, który podaje poniżej.

Czy ktoś mógłby podpowiedzieć gdzie gdzie jest błąd?? lub jakoś mnie nakierować??

public void showAllTanks () {
		TankDao tankDao = new TankDao(this);
		List<TankBean> alltank = tankDao.getAllTanks();
		Log.i("Do zrobienia", alltank.size()+"");
		TableLayout t1 = (TableLayout)findViewById(R.id.statTankTable);
		
		TableRow tr_head = new TableRow(this);
		tr_head.setId(10);
		tr_head.setBackgroundColor(Color.GRAY);
		tr_head.setLayoutParams(new LayoutParams(
		LayoutParams.FILL_PARENT,
		LayoutParams.WRAP_CONTENT));
		
		TextView label_id = new TextView(this);
        label_id.setId(20);
        label_id.setText("Id");
        label_id.setTextColor(Color.WHITE);
        label_id.setPadding(5, 5, 5, 5);
        tr_head.addView(label_id);// add the column to the table row here
		
		........ - kolejne pola w wierszu

--------------------------------------------------------------------------------------------------
        
        t1.addView(tr_head, new TableLayout.LayoutParams(
                LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));
        
        for(int i=0; i<alltank.size();i++){
        	TankBean tb = alltank.get(i); //z tego wziac dane do kolumn
        	 String log = "Id: "+tb.getId()+" ,Data: " + tb.getDate() + " ,Stacja: " + tb.getStation() + " ,Cena za litr: " + tb.getPriceForLiter() + " ,Kwota: " + tb.getPrice() + " ,Ilość litrów: " + tb.getLiters() + " ,Stan licznika: " + tb.getKm() + " ,Spalanie: " + tb.getCombustion();
             // Writing Contacts to log
             Log.i("Name: ", log);
     

// od tego miejsca komentuję
		     TableRow tr = new TableRow(this);
		     if(alltank.size()%2!=0) tr.setBackgroundColor(Color.GRAY);
		     tr.setId(100+alltank.size());
		     tr.setLayoutParams(new LayoutParams(
		     LayoutParams.FILL_PARENT,
		     LayoutParams.WRAP_CONTENT));
		     
		   //Create two columns to add as table data
		    TextView labelID = new TextView(this);
		    labelID.setId(200+alltank.size()); 
		    labelID.setText(tb.getId());
		    labelID.setPadding(2, 0, 5, 0);
		    labelID.setTextColor(Color.WHITE);
		    tr.addView(labelID);
		    
		    TextView labelDATE = new TextView(this);
		    labelDATE.setId(200+alltank.size());
		    labelDATE.setText(tb.getDate());
		    //labelDATE.setPadding(5, 5, 5, 5);
		    labelDATE.setTextColor(Color.WHITE);
		    tr.addView(labelDATE);
		    
		    ............... - kolejne pola w wierszu


		    // finally add this to the table row
		   t1.addView(tr, new TableLayout.LayoutParams(
		    	                    LayoutParams.FILL_PARENT,
		    	                    LayoutParams.WRAP_CONTENT));
     
        	 Log.i("control point", "do tego momentu działa");
        }
	} 

kod błędu z logcat'a:

 
09-21 12:06:57.469: E/AndroidRuntime(636): FATAL EXCEPTION: main
09-21 12:06:57.469: E/AndroidRuntime(636): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.samochodspalanieiwydatki/com.example.samochodspalanieiwydatki.AllTankActivity}: android.content.res.Resources$NotFoundException: String resource ID #0x1
09-21 12:06:57.469: E/AndroidRuntime(636): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
09-21 12:06:57.469: E/AndroidRuntime(636): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
09-21 12:06:57.469: E/AndroidRuntime(636): 	at android.app.ActivityThread.access$600(ActivityThread.java:130)
09-21 12:06:57.469: E/AndroidRuntime(636): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
09-21 12:06:57.469: E/AndroidRuntime(636): 	at android.os.Handler.dispatchMessage(Handler.java:99)
09-21 12:06:57.469: E/AndroidRuntime(636): 	at android.os.Looper.loop(Looper.java:137)
09-21 12:06:57.469: E/AndroidRuntime(636): 	at android.app.ActivityThread.main(ActivityThread.java:4745)
09-21 12:06:57.469: E/AndroidRuntime(636): 	at java.lang.reflect.Method.invokeNative(Native Method)
09-21 12:06:57.469: E/AndroidRuntime(636): 	at java.lang.reflect.Method.invoke(Method.java:511)
09-21 12:06:57.469: E/AndroidRuntime(636): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
09-21 12:06:57.469: E/AndroidRuntime(636): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-21 12:06:57.469: E/AndroidRuntime(636): 	at dalvik.system.NativeStart.main(Native Method)
09-21 12:06:57.469: E/AndroidRuntime(636): Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x1
09-21 12:06:57.469: E/AndroidRuntime(636): 	at android.content.res.Resources.getText(Resources.java:229)
09-21 12:06:57.469: E/AndroidRuntime(636): 	at android.widget.TextView.setText(TextView.java:3620)
09-21 12:06:57.469: E/AndroidRuntime(636): 	at com.example.samochodspalanieiwydatki.AllTankActivity.showAllTanks(AllTankActivity.java:117)
09-21 12:06:57.469: E/AndroidRuntime(636): 	at com.example.samochodspalanieiwydatki.AllTankActivity.onCreate(AllTankActivity.java:24)
09-21 12:06:57.469: E/AndroidRuntime(636): 	at android.app.Activity.performCreate(Activity.java:5008)
09-21 12:06:57.469: E/AndroidRuntime(636): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
09-21 12:06:57.469: E/AndroidRuntime(636): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
09-21 12:06:57.469: E/AndroidRuntime(636): 	... 11 more

A tutaj wkleję kod z logcat'a gdy reszta programu jest zakomentowana:

 
09-21 12:41:34.299: I/Do zrobienia(689): 7
09-21 12:41:34.350: I/Name:(689): Id: 1 ,Data: 2014-08-25 ,Stacja: orlen ,Cena za litr: 2.69 ,Kwota: 93.24 ,Ilość litrów: 35 ,Stan licznika: 70000 ,Spalanie: 7.9
09-21 12:41:34.350: I/control point(689): do tego momentu działa
09-21 12:41:34.350: I/Name:(689): Id: 2 ,Data: 2014-08-26 ,Stacja: bliska ,Cena za litr: 2.54 ,Kwota: 70,64 ,Ilość litrów: 32.11 ,Stan licznika: 70500 ,Spalanie: 8.5
09-21 12:41:34.359: I/control point(689): do tego momentu działa
09-21 12:41:34.384: I/Name:(689): Id: 3 ,Data: 2014-08-27 ,Stacja: shell ,Cena za litr: 2.62 ,Kwota: 87,56 ,Ilość litrów: 33.32 ,Stan licznika: 70850 ,Spalanie: 8.2
09-21 12:41:34.384: I/control point(689): do tego momentu działa
09-21 12:41:34.400: I/Name:(689): Id: 4 ,Data: 2014-08-28 ,Stacja: orlen ,Cena za litr: 2.69 ,Kwota: 89,84 ,Ilość litrów: 32.82 ,Stan licznika: 71250 ,Spalanie: 7.9
09-21 12:41:34.400: I/control point(689): do tego momentu działa
09-21 12:41:34.409: I/Name:(689): Id: 5 ,Data: 2014-08-29 ,Stacja: BP ,Cena za litr: 2.65 ,Kwota: 77.77 ,Ilość litrów: 31.18 ,Stan licznika: 71750 ,Spalanie: 8.15
09-21 12:41:34.409: I/control point(689): do tego momentu działa
09-21 12:41:34.419: I/Name:(689): Id: 6 ,Data: 2014-08-30 ,Stacja: lotos ,Cena za litr: 2.6 ,Kwota: 72.22 ,Ilość litrów: 28.15 ,Stan licznika: 72100 ,Spalanie: 9.2
09-21 12:41:34.419: I/control point(689): do tego momentu działa
09-21 12:41:34.419: I/Name:(689): Id: 7 ,Data: 2014-09-01 ,Stacja: BP ,Cena za litr: 2.65 ,Kwota: 88.88 ,Ilość litrów: 32.68 ,Stan licznika: 72350 ,Spalanie: 9.5
09-21 12:41:34.419: I/control point(689): do tego momentu działa


0

Ok już wiem o co chodziło. Id zwracało wartość Int i program nie mógł tego wstawić do TextView. Wystarczyło zamienić na stringa i śmiga.

labelID.setText(Integer.toString(tb.getId()));

1 użytkowników online, w tym zalogowanych: 0, gości: 1