Autore Topic: Creata una classe con dentro una funzione... come estenderla?  (Letto 845 volte)

Offline formattato

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg P990 Dual Core
  • Play Store ID:
    RoxR
  • Sistema operativo:
    Windows xp
Creata una classe con dentro una funzione... come estenderla?
« il: 15 Giugno 2011, 17:36:59 CEST »
0
Ciao a tutti... ho un problemino che spero qualcuno di voi possa chiarirmi...
Praticamente il mio programma deve salvare dei dati in files e per questo ho implementato un codice di scrittura, che ho chiamato writefile(path,dati). Ecco per utilizzare questa mia "funzione" in diversi punti del mio programma ho pensato di inserirla in una classe che ho chiamato Scrivi, in modo da poter raggiungere la funzione di scrittura digitando Scrivi.writefile(path,dati) da qualunque classe del mio programma (e in effetti questo avviene!) Il problema è che per inesperienza, non so come devo estendere questa classe... Ho provato come Activity ma non funziona... Qualcuno mi può aiutare???

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:Creata una classe con dentro una funzione... come estenderla?
« Risposta #1 il: 15 Giugno 2011, 21:28:08 CEST »
0
Java Tutorial: The “extend” Keyword
qual'è il tuo obbiettivo?

Offline formattato

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg P990 Dual Core
  • Play Store ID:
    RoxR
  • Sistema operativo:
    Windows xp
Re:Creata una classe con dentro una funzione... come estenderla?
« Risposta #2 il: 15 Giugno 2011, 23:10:49 CEST »
0
Ti spiego: Ho diverse classi, ognuna delle quali salva dei file diversi per nomi e contenuto. Per la creazione del file ho creato una funzioncina che però fino ad ora ho riscritto in ogni classe affinché possa essere richiamata nella stessa. Ovviamente questo causa uno spreco di memoria visto che la funzione viene compilata molteplici volte, quindi ho creato un file di classe e l'ho chiamato scrivifile, dichiarando al suo interno la mia funzione di scrittura come STATIC per essere poi disponibile nelle altre classi semplicemente digitando scrivifile.write(nomefile,data), ma non funziona perché un metodo non è Static...
QUESTA E' LA SCHERMATA RELATIVA ALLA FUNZIONE E ALL'ERRORE...
Come posso fare??? AIUTO!

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:Creata una classe con dentro una funzione... come estenderla?
« Risposta #3 il: 16 Giugno 2011, 09:17:02 CEST »
0
puoi dichiarare il metodo non static, per esempio public.
poi quando hai bisogno di scrivere fai:
Codice (Java): [Seleziona]
scrivifile sf=new scrivifile()
sf.write("dati.txt","ABCDE");








Offline Zappescu

  • Utente junior
  • **
  • Post: 110
  • Respect: +7
    • Mostra profilo
    • Tic Tank Toe
  • Dispositivo Android:
    HTC Magic
  • Play Store ID:
    Zapmobilegames
  • Sistema operativo:
    Win XP
Re:Creata una classe con dentro una funzione... come estenderla?
« Risposta #4 il: 16 Giugno 2011, 09:58:42 CEST »
0
Io uso una classe per gestire i suoni, unica e visibile dappertutto nel codice. E' una classe di tipo singleton (se cerchi in rete trovi molte impementazioni).

Nella classe singleton ho:

Codice (Java): [Seleziona]
public class SoundManager {
        static private SoundManager _instance;
        private static SoundPool mSoundPool;
        private static HashMap<Integer,Integer> mSoundPoolMap;
        private static AudioManager  mAudioManager;
        private static Context mContext;
        public static int Base_Volume;
        public static float sfx_volume;
        public static float sfx_volume_before;
 
        private SoundManager()
        {
        }
 
        /**
         * Requests the instance of the Sound Manager and creates it
         * if it does not exist.
         *
         * @return Returns the single instance of the SoundManager
         */

        static synchronized public SoundManager getInstance()
        {
            if (_instance == null)
              _instance = new SoundManager();
            return _instance;
         }
}

Nel Main ti basta chiamare, nell'OnCreate:

Codice (Java): [Seleziona]
SoundManager.getInstance();
Poi implementi i metodi di cui hai bisogno e li peschi dappertutto.

Hope it helps ;)
Zapmobilegames website
Tic Tank Toe: a new approach for a classic game

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:Creata una classe con dentro una funzione... come estenderla?
« Risposta #5 il: 16 Giugno 2011, 10:18:18 CEST »
0
Io uso una classe per gestire i suoni, unica e visibile dappertutto nel codice. E' una classe di tipo singleton (se cerchi in rete trovi molte impementazioni).

Nella classe singleton ho:

Codice (Java): [Seleziona]
public class SoundManager {
        static private SoundManager _instance;
        private static SoundPool mSoundPool;
        private static HashMap<Integer,Integer> mSoundPoolMap;
        private static AudioManager  mAudioManager;
        private static Context mContext;
        public static int Base_Volume;
        public static float sfx_volume;
        public static float sfx_volume_before;
 
        private SoundManager()
        {
        }
 
        /**
         * Requests the instance of the Sound Manager and creates it
         * if it does not exist.
         *
         * @return Returns the single instance of the SoundManager
         */

        static synchronized public SoundManager getInstance()
        {
            if (_instance == null)
              _instance = new SoundManager();
            return _instance;
         }
}

Nel Main ti basta chiamare, nell'OnCreate:

Codice (Java): [Seleziona]
SoundManager.getInstance();
Poi implementi i metodi di cui hai bisogno e li peschi dappertutto.

Hope it helps ;)

questo è molto intelligente e ben fatto, è in effetti quello che fa android con gli adapter (fisici)
tipo per prendere il bluetooth adapter si fa:
BluetoothAdapter.getDefaultAdapter
per l'nfc
NFCAdapter.getDefaultAdapter
 e via dicendo, se una cosa la devi usare solo una volta, fatti un singleton, magari però il context glielo passi ogni volta, cosi eviti casi strani di context a null o non ricreato!
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 formattato

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg P990 Dual Core
  • Play Store ID:
    RoxR
  • Sistema operativo:
    Windows xp
Re:Creata una classe con dentro una funzione... come estenderla?
« Risposta #6 il: 16 Giugno 2011, 10:55:00 CEST »
0
puoi dichiarare il metodo non static, per esempio public.
poi quando hai bisogno di scrivere fai:
Codice (Java): [Seleziona]
scrivifile sf=new scrivifile()
sf.write("dati.txt","ABCDE");
in effetti ho provato anche così ma senza risultati infatti...il programma parte ma da una eccezione forse a causa del contex nullo.

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:Creata una classe con dentro una funzione... come estenderla?
« Risposta #7 il: 16 Giugno 2011, 11:09:24 CEST »
+1
in effetti ho provato anche così ma senza risultati infatti...il programma parte ma da una eccezione forse a causa del contex nullo.
come ti ho detto, quando fai il write, lo chiami con:
write(String file,String data, Context mContext)

poi usi il context passato
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 formattato

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg P990 Dual Core
  • Play Store ID:
    RoxR
  • Sistema operativo:
    Windows xp
Re:Creata una classe con dentro una funzione... come estenderla?
« Risposta #8 il: 16 Giugno 2011, 18:09:46 CEST »
0
Sei un genio!!!  ;-) grazie Nicola_D
Funziona ad ok!!!

Il metodo citato da Zappescu l'ho provato ma non va nella mia applicazione perchè il nome del file da scrivere è di volta in volta diverso per ogni classe, mentre (se non erro) la classe SoundManager non può ricevere parametri in input o almeno così credo!