Autore Topic: Listview non funziona sui tab  (Letto 420 volte)

Offline pupi93

  • Utente junior
  • **
  • Post: 54
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ideos
  • Sistema operativo:
    Ubuntu 10.04
Listview non funziona sui tab
« il: 08 Gennaio 2013, 15:39:21 CET »
0
Salve a tutti!
Ho creato una classe che crea una listview a partire da un db sqlite

Eccola:

Codice (Java): [Seleziona]
package Erbe.cure;


import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class Erbe extends ListActivity {
   
        private ListView lv = null;
       
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_erbe);
       
        lv = (ListView)findViewById(R.id.list_erbe);
       
        SQLiteDBHelper dbh = new SQLiteDBHelper(this);
        SQLiteDatabase db = dbh.getReadableDatabase();
       
        Cursor ca = db.query("Piante", new String[] {"_id","pianta"}, null, null, null, null, null);
        startManagingCursor(ca);
        lv.setAdapter(new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, ca,
                        new String[]{ "pianta","_id" },
                        new int[] { android.R.id.text1, android.R.id.text2}));
    }
}

La classe funziona, perchè crea l'activity e parte, creando a partire da i dati dentro il db la listview.

Il problema nasce quando voglio inserire questa listview e quindi questa classe in un tab.

La classe main dell'app è questa in parte

Codice (Java): [Seleziona]
package Erbe.cure;


import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TabHost;

public class ErbeecureActivity extends TabActivity {

        /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        TabHost mTabHost = getTabHost();
       
        Intent erb = new Intent().setClass(this, Erbe.class);
        mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("Erbe").setContent(erb));

.....
.....

In questo modo richiamo la classe Erbe dentro un tab. E' errato?
Pechè l'app crasha!

Di seguito il logcat:

Codice (Java): [Seleziona]
01-08 15:37:36.058: D/AndroidRuntime(468): Shutting down VM
01-08 15:37:36.058: W/dalvikvm(468): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
01-08 15:37:36.078: E/AndroidRuntime(468): FATAL EXCEPTION: main
01-08 15:37:36.078: E/AndroidRuntime(468): java.lang.RuntimeException: Unable to start activity ComponentInfo{Erbe.cure/Erbe.cure.ErbeecureActivity}: java.lang.RuntimeException: Unable to start activity ComponentInfo{Erbe.cure/Erbe.cure.Erbe}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
01-08 15:37:36.078: E/AndroidRuntime(468):      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
01-08 15:37:36.078: E/AndroidRuntime(468):      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-08 15:37:36.078: E/AndroidRuntime(468):      at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-08 15:37:36.078: E/AndroidRuntime(468):      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-08 15:37:36.078: E/AndroidRuntime(468):      at android.os.Handler.dispatchMessage(Handler.java:99)
01-08 15:37:36.078: E/AndroidRuntime(468):      at android.os.Looper.loop(Looper.java:123)
01-08 15:37:36.078: E/AndroidRuntime(468):      at android.app.ActivityThread.main(ActivityThread.java:4627)
01-08 15:37:36.078: E/AndroidRuntime(468):      at java.lang.reflect.Method.invokeNative(Native Method)
01-08 15:37:36.078: E/AndroidRuntime(468):      at java.lang.reflect.Method.invoke(Method.java:521)
01-08 15:37:36.078: E/AndroidRuntime(468):      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-08 15:37:36.078: E/AndroidRuntime(468):      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-08 15:37:36.078: E/AndroidRuntime(468):      at dalvik.system.NativeStart.main(Native Method)
01-08 15:37:36.078: E/AndroidRuntime(468): Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{Erbe.cure/Erbe.cure.Erbe}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
01-08 15:37:36.078: E/AndroidRuntime(468):      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
01-08 15:37:36.078: E/AndroidRuntime(468):      at android.app.ActivityThread.startActivityNow(ActivityThread.java:2503)
01-08 15:37:36.078: E/AndroidRuntime(468):      at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
01-08 15:37:36.078: E/AndroidRuntime(468):      at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
01-08 15:37:36.078: E/AndroidRuntime(468):      at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:651)
01-08 15:37:36.078: E/AndroidRuntime(468):      at android.widget.TabHost.setCurrentTab(TabHost.java:323)
01-08 15:37:36.078: E/AndroidRuntime(468):      at android.widget.TabHost.addTab(TabHost.java:213)
01-08 15:37:36.078: E/AndroidRuntime(468):      at Erbe.cure.ErbeecureActivity.onCreate(ErbeecureActivity.java:20)
01-08 15:37:36.078: E/AndroidRuntime(468):      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-08 15:37:36.078: E/AndroidRuntime(468):      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-08 15:37:36.078: E/AndroidRuntime(468):      ... 11 more
01-08 15:37:36.078: E/AndroidRuntime(468): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
01-08 15:37:36.078: E/AndroidRuntime(468):      at android.app.ListActivity.onContentChanged(ListActivity.java:245)
01-08 15:37:36.078: E/AndroidRuntime(468):      at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:201)
01-08 15:37:36.078: E/AndroidRuntime(468):      at android.app.Activity.setContentView(Activity.java:1647)
01-08 15:37:36.078: E/AndroidRuntime(468):      at Erbe.cure.Erbe.onCreate(Erbe.java:18)
01-08 15:37:36.078: E/AndroidRuntime(468):      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-08 15:37:36.078: E/AndroidRuntime(468):      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-08 15:37:36.078: E/AndroidRuntime(468):      ... 20 more

Grazie per l'aiuto!
:)

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Listview non funziona sui tab
« Risposta #1 il: 08 Gennaio 2013, 16:52:53 CET »
+1
Citazione
Your content must have a ListView whose id attribute is 'android.R.id.list'
01-08 15:37:36.078: E/AndroidRuntime(468):      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)

log autoesplicativo...
nel layout devi avere una list view che ha come id @android:id/list
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline pupi93

  • Utente junior
  • **
  • Post: 54
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ideos
  • Sistema operativo:
    Ubuntu 10.04
Re:Listview non funziona sui tab
« Risposta #2 il: 08 Gennaio 2013, 20:50:40 CET »
0
Adesso l'errore è diverso!
Non trova la tabella Piante.

Ho provato il db e le classi per la gestione del db e funzionano. Appena cerco di avviarle dentro un tab non funzionano! Perchè?
Ho fatto tutto! Spostato il db in /data/data ec...
Il db funziona perfettamente e la tabella esiste ed è quella. L'ho provata con l'altra classe, non vedo il perchè non deve funzionare con un'altra classe dentro un tab!

Offline pupi93

  • Utente junior
  • **
  • Post: 54
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ideos
  • Sistema operativo:
    Ubuntu 10.04
Re:Listview non funziona sui tab
« Risposta #3 il: 08 Gennaio 2013, 21:57:43 CET »
0
Ok ho risolto da me!

In sostanza avevo lo stesso db usato in due progetti diversi. Quindi ho rinominato il db con un nome diverso ed adesso funziona tutto!