» »

[Android]Cudno obnasanje aplikacije in emulatorja

[Android]Cudno obnasanje aplikacije in emulatorja

KernelPanic ::

Spostovani!

Sem zacetnik pri Androidu in danes ste mi ze pomagali resiti problem z php posiljanjem podatkov v android aplikacijo. Nastavitev projekta samega nisem nic spreminjal niti nastavitev emulatorja, vendar, ko poizkusim sedaj pognati mojo aplikacijo, se stvar ne zazene, v debug oknu pa se izpise nekaj cudnega:
Attaching to localhost:8606
User program running
Thread 9 Thread-10 stopped at Instrumentation.java:1405.
. Se prej se v emulatorju pojavi:
Sorry! The process android.process.acore has stopped unexpcetledly. Please try again.
. Kaj se dogaja?

KernelPanic ::

Torej, sedaj sem nasel napako, vendar mi ni jasno, zakaj se pojavlja. Torej, ob startu aplikacije se mi pojavi splash screen, ki nato po 3,5 sek izgine in in bi se morala pojaviti activity za pregled kategorij produktov. Tukaj je koda:
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.cactivitysplashscreen);

        Thread mythread=new Thread()
        {
            @Override
            public void run()
            {
                try
                {
                    while(splashActive&&ms<splashTime)
                    {
                        if(!paused)
                        {
                            ms+=100;
                        }
                        sleep(100);
                    }
                }
                catch(Exception ex)
                {
                    Log.wtf(CActivitySplashScreen.m_strLogTag,
                    ex.getClass().getName()+":"+
                    ex.getMessage().toString());
                }
                finally
                {
                    try
                    {
                        Intent intent=new Intent(CActivitySplashScreen.this,
                                                 CActivityBrowseCategories.class);
                        startActivity(intent);
                    }
                    catch(Exception ex)
                    {
                        Log.wtf(CActivitySplashScreen.m_strLogTag,
                                ex.getClass().getName()+":"+
                                ex.getMessage().toString());
                    }
                    finally
                    {
                    }   // try-catch-finally
                }
            }   // run
        };

        mythread.start();
    }
V vrstici startActivity pride do exceptiona "Activity not found.". Zakaj mi ne najde activity-ja?

Lp,
M.

krho ::

Ker ga nisi vpisal v manifest?
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net

KernelPanic ::

Seveda sem dal, tukaj je manifest file:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.test.testapp"
    android:versionCode="1"
    android:versionName="1.0">
    <uses-sdk
        android:minSdkVersion="10"
    />
    <application android:label="@string/app_name" >
        <activity android:name=".CActivitySplashScreen"
                  android:noHistory="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name=".CActivityLoginScreen"
                  android:label="@string/label_register_si"
                  android:noHistory="true">
        </activity>

        <activity android:name=".CActivityRegisterScreen"
                  android:label="@string/label_login_screen_si"
                  android:noHistory="false">
        </activity>

        <activity android:name=".CActivityBrowseCategories">
                  android:theme="@android:style/Theme.NoTitleBar">
        </activity>
    </application>

    <uses-permission
        android:name="android.permission.INTERNET">
    </uses-permission>
</manifest>

KernelPanic ::

Katerokoli od activities podam v intent kodo:
                    try
                    {
                        Intent intent=new Intent(CActivitySplashScreen.this,
                                                 CActivityMainScreen.class);
                        startActivity(intent);
                    }
                    catch(Exception ex)
                    {
                        Log.wtf(CActivitySplashScreen.m_strLogTag,
                                ex.getClass().getName()+":"+
                                ex.getMessage().toString());
                    }
                    finally
                    {
                    }   // try-catch-finally
mi je po splash screenu ne pozene, ampak app izvisi in nonstop se kaze splash screen. Kaj delam narobe?

Kocka ::

Domnevam, da je problem v tem, ker se startActivity() kliče iz drugega threda, kot je UI. Predlagam, da najprej poskusiš prestaviti startActivity() ven iz novega threda, če se le ta v tem primeru štarta.
Problem se reši s pomočjo Handlerja in njegove funkcije post() ki pošlje UI threadu ukaz, da naj kliče startActivity(). Primer sem našel tule: http://www.mail-archive.com/android-dev...
Elegantnejša rešitev bi pa bila uporaba asyncTask razreda.

KernelPanic ::

Samo ista koda je, preden sem zacel dodajati nove activity-je (z pripadajocimi xml GUI izgledi), delovala brez problemov. Se nekaj, mogoce offtopic: V catch stavku je log in izpis napake v zgornji kodi, kar pomeni, da se to nekam zapise. Kje je vrednost Log stavka vidna v NetBeans, ker, ko postavim breakpoint na log stavek, se tam ustavi, kar pomeni, da je prislo do exceptiona, vendar izpisa nikjer v NetBeans ne vidim. Bom pogledal kako je z temi threadi. Ta koda je narejena po vzorcnem primeru za splah screen na naslovu http://androidcookbook.com/Recipe.seam;....

KernelPanic ::

Torej, ujel sem exception:
java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
Kako naj naredim custom view za element v ListView-u. Naredil sem sledece:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TextView android:id="@+id/item_mainscreen_text"
            android:gravity="center"
            android:textSize="22dip"
            android:textColor="#ffffff"
            android:textStyle="bold"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
        />
</LinearLayout>
To je file citemmainscreen.xml. Kaj moram dati v vrstico:
            setListAdapter(new ArrayAdapter<String>(this,
                                                    R.layout.citemmainscreen,
                                                    items));
? Ali R.layout.citemmainscreen (ne dela), probal sem R.id.item_mainscreen_text pa tudi ne dela. Mi lahko kdo pomaga?


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Android] Bluetooth aplikacija

Oddelek: Programiranje
51096 (959) marjan_h
»

[android] java.lang.RuntimeException

Oddelek: Programiranje
141085 (777) piki12
»

[android] vstavljanje slike

Oddelek: Programiranje
71247 (1144) messi
»

[Android]Vrnitev v "parent" activity

Oddelek: Programiranje
101518 (1391) KernelPanic
»

[Android]Upper Banner vprasanje

Oddelek: Programiranje
112343 (2249) KernelPanic

Več podobnih tem