Autore Topic: Riavvio activity  (Letto 877 volte)

Offline Christian Giupponi

  • Utente junior
  • **
  • Post: 128
  • Respect: 0
    • Google+
    • http://it.linkedin.com/pub/christian-giupponi/29/628/810
    • ultimoprofeta
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    ItalianDevTeam
  • Sistema operativo:
    Mac OSX Lion
Riavvio activity
« il: 12 Gennaio 2011, 16:24:08 CET »
0
Ciao,
avrei un problemino...quando cambio l'orientamento del dispositivo da portrait a landscape la mia activity si riavvia resettandomi tutti i campi che sono presenti nell'applicazione...esiste un modo per evitare questo riavvio? oppure esiste un modo che permette alla mia applicazione di NON reagire in nessun modo al cambio di orientamento?

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7

Offline Christian Giupponi

  • Utente junior
  • **
  • Post: 128
  • Respect: 0
    • Google+
    • http://it.linkedin.com/pub/christian-giupponi/29/628/810
    • ultimoprofeta
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    ItalianDevTeam
  • Sistema operativo:
    Mac OSX Lion
Re:Riavvio activity
« Risposta #2 il: 12 Gennaio 2011, 17:06:04 CET »
0
Graziw pwe il link!
Ho provato a seguire il tutorial ma adesso l'applicazione crasha!

Questo è il mio manifest e non sono molto sicuro di aver messo correttamente la riga segnata in grassetto:

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="christian.giocoimpiccato"
     android:versionCode="1"
     android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".ImpiccatoMain"
                 android:label="@string/app_name"
                 android:screenOrientation="portrait"
                 >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
         <activity android:name=".ImpiccatoMain" android:screenOrientation="portrait"></activity>
                <activity android:name=".Gioco" android:screenOrientation="portrait"></activity>
    </application>
    [b]<application name=".Inizializzazioni"></application>
        [/b]
</manifest>

questa è la classe Inizializzazioni modificata:

Codice (Java): [Seleziona]
package christian.giocoimpiccato;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

import android.app.Application;
import android.content.Context;
import android.util.Log;

public class Inizializzazioni extends Application {
       
       
        //Variabili
    private String parola;
    ArrayList<String> listaParole = new ArrayList<String>();
    int totaleParole;
    int indice;
       
       
     //singleton design pattern
     static Inizializzazioni instance;
       
     public static Inizializzazioni getInstance(){
          if(instance==null){
                Log.v("MyApplication", "instance created");
                instance=new Inizializzazioni();
           }
           Log.v("MyApplication", "instance returned");
          return instance;
      }
       
       
        @Override
        public void onCreate() {
                super.onCreate();
                Log.v("MyApplication", "onCreate");
               
              //Leggo il file contenente le parole dalla cartella assets
                        listaParole = readTextFile(this, "parole.txt");
                       
                        //Recupero il numero degli lementi della lista
                        totaleParole = listaParole.size();
                       
                        //Estraggo una parola a caso
                        indice= (int)(Math.random() * (totaleParole));
               
                Inizializzazioni myIniz=getInstance();
               
                myIniz.setParola(listaParole.get(indice));
               
        }
       
        public void setParola(String p) {
                this.parola = p;
        }
       
        public String getParola() {
                return parola;
        }
       
        /*
         *      Metodo che mi permette di leggere il file presente nella cartella assets
         *      che contiene tutte le parole
         */

        private static ArrayList<String> readTextFile(Context context, String fileName) {
            BufferedReader in = null;
            ArrayList<String> lista = new ArrayList<String>();
            try {
                    in = new BufferedReader(new InputStreamReader(context.getAssets().open(fileName)));
                    String line;
                    while ((line = in.readLine()) != null)
                        lista.add(line);
                    return lista;
            } catch (IOException e) {
                    Log.e("readTextFile", "Error readind file " + fileName, e);
                    return lista;
            } finally {
                    if (in != null) {
                            try {
                                    in.close();
                            } catch (IOException e) {
                                    // Ignore
                            }
                    }
            }
        }

}

e l'ho richiamata in questo modo:

Codice (Java): [Seleziona]
Inizializzazioni myIniz = Inizializzazioni.getInstance();
String parola = myIniz.getParola();

Mi sono perso in qualche passaggio?

questa è la risposta del LogCat:

Codice: [Seleziona]
01-12 16:57:28.738: ERROR/AndroidRuntime(1142): FATAL EXCEPTION: main
01-12 16:57:28.738: ERROR/AndroidRuntime(1142): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{christian.giocoimpiccato/christian.giocoimpiccato.Inizializzazioni}: java.lang.ClassCastException: christian.giocoimpiccato.Inizializzazioni
01-12 16:57:28.738: ERROR/AndroidRuntime(1142):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1544)
01-12 16:57:28.738: ERROR/AndroidRuntime(1142):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638)
01-12 16:57:28.738: ERROR/AndroidRuntime(1142):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
01-12 16:57:28.738: ERROR/AndroidRuntime(1142):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928)
01-12 16:57:28.738: ERROR/AndroidRuntime(1142):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-12 16:57:28.738: ERROR/AndroidRuntime(1142):     at android.os.Looper.loop(Looper.java:123)
01-12 16:57:28.738: ERROR/AndroidRuntime(1142):     at android.app.ActivityThread.main(ActivityThread.java:3647)
01-12 16:57:28.738: ERROR/AndroidRuntime(1142):     at java.lang.reflect.Method.invokeNative(Native Method)
01-12 16:57:28.738: ERROR/AndroidRuntime(1142):     at java.lang.reflect.Method.invoke(Method.java:507)
01-12 16:57:28.738: ERROR/AndroidRuntime(1142):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-12 16:57:28.738: ERROR/AndroidRuntime(1142):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-12 16:57:28.738: ERROR/AndroidRuntime(1142):     at dalvik.system.NativeStart.main(Native Method)
01-12 16:57:28.738: ERROR/AndroidRuntime(1142): Caused by: java.lang.ClassCastException: christian.giocoimpiccato.Inizializzazioni
01-12 16:57:28.738: ERROR/AndroidRuntime(1142):     at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
01-12 16:57:28.738: ERROR/AndroidRuntime(1142):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1536)
01-12 16:57:28.738: ERROR/AndroidRuntime(1142):     ... 11 more
01-12 16:57:28.768: WARN/ActivityManager(61):   Force finishing activity christian.giocoimpiccato/.Inizializzazioni
01-12 16:57:29.289: WARN/ActivityManager(61): Activity pause timeout for HistoryRecord{406707c0 christian.giocoimpiccato/.Inizializzazioni}
01-12 16:57:35.379: DEBUG/dalvikvm(258): GC_EXPLICIT freed 7K, 54% free 2536K/5511K, external 716K/1038K, paused 48ms
01-12 16:57:40.159: WARN/ActivityManager(61): Activity destroy timeout for HistoryRecord{406707c0 christian.giocoimpiccato/.Inizializzazioni}
01-12 16:58:45.348: DEBUG/SntpClient(61): request time failed: java.net.SocketException: Address family not supported by protocol
01-12 17:00:15.858: INFO/Process(1142): Sending signal. PID: 1142 SIG: 9
01-12 17:00:15.879: INFO/ActivityManager(61): Process christian.giocoimpiccato (pid 1142) has died.
01-12 17:00:15.928: WARN/InputManagerService(61): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@40611d28
01-12 17:03:45.359: DEBUG/SntpClient(61): request time failed: java.net.SocketException: Address family not supported by protocol


Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Riavvio activity
« Risposta #3 il: 12 Gennaio 2011, 17:15:41 CET »
0
name=".Inizializzazioni"

va messo nello stesso tag di

<application android:icon="@drawable/icon" android:label="@string/app_name">

quindi

<application android:icon="@drawable/icon" android:label="@string/app_name" name=".Inizializzazioni">





Offline Christian Giupponi

  • Utente junior
  • **
  • Post: 128
  • Respect: 0
    • Google+
    • http://it.linkedin.com/pub/christian-giupponi/29/628/810
    • ultimoprofeta
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    ItalianDevTeam
  • Sistema operativo:
    Mac OSX Lion
Re:Riavvio activity
« Risposta #4 il: 12 Gennaio 2011, 18:56:23 CET »
0
quindi dovrei sostituire l'activity principale con Inizializzazioni?

Codice (XML): [Seleziona]
<activity android:name=".ImpiccatoMain"
                android:label="@string/app_name"
                android:screenOrientation="portrait"
                >

diventa

Codice (XML): [Seleziona]
<activity android:name=".Inizializzazioni"
                android:label="@string/app_name"
                android:screenOrientation="portrait"
                >

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Riavvio activity
« Risposta #5 il: 12 Gennaio 2011, 20:58:25 CET »
0
devi fare quello che ti ho detto nel messaggio precedente ovvero:

aggiungere l'attributo   name=".Inizializzazioni"  all'elemento application che hai già, che quindi diventerà:

Codice (XML): [Seleziona]
<application android:icon="@drawable/icon" android:label="@string/app_name" name=".Inizializzazioni">
Non devi creare nè nuovi elementi activity e neanche nuovi elementi application.

(si, a anche quello che avevi messo in grassetto va tolto)
« Ultima modifica: 12 Gennaio 2011, 21:08:22 CET da Qlimax »