Autore Topic: Aiuto su TabActivity  (Letto 658 volte)

Offline darkmax

  • Utente junior
  • **
  • Post: 62
  • Respect: 0
    • Mostra profilo
    • Emoe - Agenzia di comunicazione Torino
  • Dispositivo Android:
    Samsung Galaxy S 3
  • Sistema operativo:
    Mac OS X
Aiuto su TabActivity
« il: 20 Gennaio 2012, 15:32:39 CET »
0
Ciao a tutti.. Ho una TabActivity che deve lanciare altre 2 activity..


Codice: [Seleziona]
package it.program.max;

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

public class Tabs extends TabActivity {       
       
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.tabs);
            TabHost th = (TabHost)findViewById(android.R.id.tabhost);
            th.setup();
           
            Intent int1 = new Intent().setClass(this, SynParkActivity.class);
            Intent int2 = new Intent().setClass(this, AboutActivity.class);
           
            TabSpec specs; // = th.newTabSpec("Map");
            specs = th.newTabSpec("Map").setIndicator("Mappa").setContent(int1);
            th.addTab(specs);
            //specs.setContent(R.id.tab1);
           
            specs = th.newTabSpec("Info").setIndicator("Info").setContent(int2);
            th.addTab(specs);
           
           /*
            Resources res = getResources(); // Resource object to get Drawables
            TabHost tabHost = getTabHost();  // The activity TabHost
            TabHost.TabSpec spec;  // Resusable TabSpec for each tab
            Intent intent;  // Reusable Intent for each tab

            // Create an Intent to launch an Activity for the tab (to be reused)
            intent = new Intent().setClass(this, SynParkActivity.class);

            // Initialize a TabSpec for each tab and add it to the TabHost
            spec = tabHost.newTabSpec("Map").setIndicator("Artists",
                              res.getDrawable(R.drawable.map))
                          .setContent(intent);
            tabHost.addTab(spec);

            // Do the same for the other tabs
            intent = new Intent().setClass(this, AboutActivity.class);
            spec = tabHost.newTabSpec("About").setIndicator("Albums",
                              res.getDrawable(R.drawable.info_icon_2))
                          .setContent(intent);
            tabHost.addTab(spec);

            tabHost.setCurrentTab(2);
           
           */
        }
       
}

questo è il manifest:

Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="it.program.max"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <uses-library android:name="com.google.android.maps"/>
       
        <activity android:name=".Tabs"
                        android:configChanges="orientation"
                        android:label="@string/app_name">
                       
                </activity>
        <activity
            android:name=".SynParkActivity"
            android:label="@string/app_name" >
        </activity>
       
        <activity
            android:name=".AboutActivity"
            android:label="@string/app_name" >
        </activity>
       
        <activity
            android:name=".Transiction"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
       
    </application>

</manifest>

E questa è la classe Transiction che parte per prima e richiama Tabs:

Codice: [Seleziona]
package it.program.max;

import android.app.Activity;
import android.content.Intent;
//import android.media.MediaPlayer;
import android.os.Bundle;

public class Transiction extends Activity{

        //MediaPlayer ourSong;
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                // TODO Auto-generated method stub
                super.onCreate(savedInstanceState);
                setContentView(R.layout.trans);
                //ourSong = MediaPlayer.create(Transiction.this, R.raw.song);
                //ourSong.start();
                Thread timer = new Thread(){
                        public void run(){
                                try{
                                        sleep(5000);
                                       
                                }
                                catch(InterruptedException e){
                                        e.printStackTrace();
                                }
                                finally{
                                        Intent apriPrimaActivity = new Intent(Transiction.this, Tabs.class);
                                        startActivity(apriPrimaActivity);
                                }
                        }
                };
                timer.start();
        }

        @Override
        protected void onPause() {
                // TODO Auto-generated method stub
                super.onPause();
                //ourSong.release();
                finish();
        }
       
       

}

Ed infine il logcat con gli errori:

Codice: [Seleziona]
01-20 15:30:17.020: D/dalvikvm(20946): GC_EXTERNAL_ALLOC freed 54K, 50% free 2715K/5379K, external 0K/0K, paused 22ms
01-20 15:30:17.040: D/dalvikvm(20946): GC_EXTERNAL_ALLOC freed 4K, 50% free 2720K/5379K, external 7K/518K, paused 16ms
01-20 15:30:18.385: D/CLIPBOARD(20946): Hide Clipboard dialog at Starting input: finished by someone else... !
01-20 15:30:22.145: D/AndroidRuntime(20946): Shutting down VM
01-20 15:30:22.145: W/dalvikvm(20946): threadid=1: thread exiting with uncaught exception (group=0x4001e578)
01-20 15:30:22.150: E/AndroidRuntime(20946): FATAL EXCEPTION: main
01-20 15:30:22.150: E/AndroidRuntime(20946): java.lang.RuntimeException: Unable to start activity ComponentInfo{it.program.max/it.program.max.Tabs}: java.lang.RuntimeException: Your content must have a TabHost whose id attribute is 'android.R.id.tabhost'
01-20 15:30:22.150: E/AndroidRuntime(20946):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
01-20 15:30:22.150: E/AndroidRuntime(20946):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
01-20 15:30:22.150: E/AndroidRuntime(20946):         at android.app.ActivityThread.access$1500(ActivityThread.java:117)
01-20 15:30:22.150: E/AndroidRuntime(20946):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
01-20 15:30:22.150: E/AndroidRuntime(20946):         at android.os.Handler.dispatchMessage(Handler.java:99)
01-20 15:30:22.150: E/AndroidRuntime(20946):         at android.os.Looper.loop(Looper.java:130)
01-20 15:30:22.150: E/AndroidRuntime(20946):         at android.app.ActivityThread.main(ActivityThread.java:3691)
01-20 15:30:22.150: E/AndroidRuntime(20946):         at java.lang.reflect.Method.invokeNative(Native Method)
01-20 15:30:22.150: E/AndroidRuntime(20946):         at java.lang.reflect.Method.invoke(Method.java:507)
01-20 15:30:22.150: E/AndroidRuntime(20946):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
01-20 15:30:22.150: E/AndroidRuntime(20946):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
01-20 15:30:22.150: E/AndroidRuntime(20946):         at dalvik.system.NativeStart.main(Native Method)
01-20 15:30:22.150: E/AndroidRuntime(20946): Caused by: java.lang.RuntimeException: Your content must have a TabHost whose id attribute is 'android.R.id.tabhost'
01-20 15:30:22.150: E/AndroidRuntime(20946):         at android.app.TabActivity.onContentChanged(TabActivity.java:105)
01-20 15:30:22.150: E/AndroidRuntime(20946):         at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:218)
01-20 15:30:22.150: E/AndroidRuntime(20946):         at android.app.Activity.setContentView(Activity.java:1663)
01-20 15:30:22.150: E/AndroidRuntime(20946):         at it.program.max.Tabs.onCreate(Tabs.java:13)
01-20 15:30:22.150: E/AndroidRuntime(20946):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-20 15:30:22.150: E/AndroidRuntime(20946):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
01-20 15:30:22.150: E/AndroidRuntime(20946):         ... 11 more


Aiutatemi.. :(

Offline boggiano

  • Utente junior
  • **
  • Post: 62
  • Respect: +5
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
  • Play Store ID:
    Alessandro Boggiano
  • Sistema operativo:
    Fedora
Re:Aiuto su TabActivity
« Risposta #1 il: 23 Gennaio 2012, 10:39:04 CET »
0
Codice: [Seleziona]
java.lang.RuntimeException: Unable to start activity ComponentInfo{it.program.max/it.program.max.Tabs}: java.lang.RuntimeException: Your content must have a TabHost whose id attribute is 'android.R.id.tabhost'
Ci posti l'xml ?

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:Aiuto su TabActivity
« Risposta #2 il: 23 Gennaio 2012, 20:08:13 CET »
0
oddio...
Citazione
Your content must have a TabHost whose id attribute is 'android.R.id.tabhost'
mi pare abbastanza esplicativo... il tuo layout deve avere un tabhost con id= android.R.id.tabhost
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 boggiano

  • Utente junior
  • **
  • Post: 62
  • Respect: +5
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
  • Play Store ID:
    Alessandro Boggiano
  • Sistema operativo:
    Fedora
Re:Aiuto su TabActivity
« Risposta #3 il: 23 Gennaio 2012, 20:25:11 CET »
0
oddio...mi pare abbastanza esplicativo... il tuo layout deve avere un tabhost con id= android.R.id.tabhost
Infatti  :-)
Proprio per quello gli ho chiesto di postare l' XML!  :D

Per una volta che non era la "quest dell NPE" !  :-P

Offline darkmax

  • Utente junior
  • **
  • Post: 62
  • Respect: 0
    • Mostra profilo
    • Emoe - Agenzia di comunicazione Torino
  • Dispositivo Android:
    Samsung Galaxy S 3
  • Sistema operativo:
    Mac OS X
Re:Aiuto su TabActivity
« Risposta #4 il: 24 Gennaio 2012, 10:24:05 CET »
0
risolto! grazie a tutti!  ;-)