Autore Topic: Tab e compatibilità app  (Letto 766 volte)

Offline robimolteni

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
Tab e compatibilità app
« il: 07 Marzo 2013, 08:57:36 CET »
0
Buongiorno a tutti,

sto sviluppando un'applicazione che prevede l'utilizzo dei Tab. Dovrei cercare di mantenere la massima compatibilità possibile con tutte le versioni di Android (diciamo dalla 2.2 in su), però ho visto che la "TabActivity" ora è 'deprecated' e bisogna utilizzare i Fragment che danno compatibilità solo dalla 3.0 in su. Ho già trovato una libreria che mi permette di integrare fragment anche per versioni < 3.0 ma considerando che in un tab devo inserire la geolocalizzazione questo mi da parecchi problemi.

La mia domanda è: sviluppando un'app che andrà in produzione in estate, conviene ancora sviluppare per android 2.x oppure dalla 3.x in su?

Grazie a tutti

Offline eagledeveloper

  • Translate Team
  • Utente senior
  • ****
  • Post: 516
  • Respect: +37
    • Google+
    • 347516210
    • dark_pinz
    • @WandDStudios
    • Mostra profilo
    • W&D Studios
  • Dispositivo Android:
    HTC One X e HTC One
  • Play Store ID:
    W%26D+Studios
  • Sistema operativo:
    Ubuntu / Windows 7
Re:Tab e compatibilità app
« Risposta #1 il: 07 Marzo 2013, 09:18:40 CET »
0
C'é la libreria android-support-v4, così puoi utilizzare i Fragment anche prima della 3.0.

Le versioni 2.x occupano ancora un bella fetta di mercato quindi, secondo me, conviene ancora sviluppare per 2.x.
I numeri contano molto di più del seme.

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:Tab e compatibilità app
« Risposta #2 il: 07 Marzo 2013, 10:15:05 CET »
0
usa l'actionbarsherlock, ti permette di usare anche i tab su android <3
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 Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
R: Tab e compatibilità app
« Risposta #3 il: 07 Marzo 2013, 15:09:26 CET »
0
Che problemi hai con la geolocalizzazione e i tab?

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:R: Tab e compatibilità app
« Risposta #4 il: 07 Marzo 2013, 16:04:49 CET »
0
Che problemi hai con la geolocalizzazione e i tab?
secondo me sta cercando di mostrare una mapActivity nel fragment. Dovrebbe usare la sherlockMapFragment (o un nome simile)
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 Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Tab e compatibilità app
« Risposta #5 il: 07 Marzo 2013, 16:08:29 CET »
0
Si beh oramai le mappe v1 sono deprecate... non è neanche più possibile richiedere l'api key. Bisogna necessariamente usare le v2.

Offline robimolteni

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
Re:Tab e compatibilità app
« Risposta #6 il: 07 Marzo 2013, 16:52:48 CET »
0
Esatto ho creato la classe SherlockMapFragment nella libreria "ActionBarSherlok" in questo modo:

Codice (Java): [Seleziona]
package com.actionbarsherlock.app;
 
import android.app.Activity;
import android.support.v4.app.Watson.OnCreateOptionsMenuListener;
import android.support.v4.app.Watson.OnOptionsItemSelectedListener;
import android.support.v4.app.Watson.OnPrepareOptionsMenuListener;
 
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.internal.view.menu.MenuItemWrapper;
import com.actionbarsherlock.internal.view.menu.MenuWrapper;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import com.google.android.gms.maps.SupportMapFragment;
 
public class SherlockMapFragment extends SupportMapFragment implements OnCreateOptionsMenuListener, OnPrepareOptionsMenuListener, OnOptionsItemSelectedListener {
    private SherlockFragmentActivity mActivity;
 
    public SherlockFragmentActivity getSherlockActivity() {
        return mActivity;
    }
 
    @Override
    public void onAttach(Activity activity) {
        if (!(activity instanceof SherlockFragmentActivity)) {
            throw new IllegalStateException(getClass().getSimpleName() + " must be attached to a SherlockFragmentActivity.");
        }
        mActivity = (SherlockFragmentActivity)activity;
 
        super.onAttach(activity);
    }
 
    @Override
    public void onDetach() {
        mActivity = null;
        super.onDetach();
    }
 
    @Override
    public final void onCreateOptionsMenu(android.view.Menu menu, android.view.MenuInflater inflater) {
        onCreateOptionsMenu(new MenuWrapper(menu), mActivity.getSupportMenuInflater());
    }
 
    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        //Nothing to see here.
    }
 
    @Override
    public final void onPrepareOptionsMenu(android.view.Menu menu) {
        onPrepareOptionsMenu(new MenuWrapper(menu));
    }
 
    @Override
    public void onPrepareOptionsMenu(Menu menu) {
        //Nothing to see here.
    }
 
    @Override
    public final boolean onOptionsItemSelected(android.view.MenuItem item) {
        return onOptionsItemSelected(new MenuItemWrapper(item));
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        //Nothing to see here.
        return false;
    }
}


Ho incluso la libreria nel mio progetto e ho creato un Fragment chiamato AFragment che estende la classe sopra in questo modo.


Codice (Java): [Seleziona]
public class AFragment extends SherlockMapFragment {
    private GoogleMap mMap;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View root = super.onCreateView(inflater, container, savedInstanceState);
        mMap = getMap();
        return root;
    }
}

Si compila tutto, ma poi crasha, ecco il log

Codice (Java): [Seleziona]
03-07 15:45:32.113: D/dalvikvm(710): Not late-enabling CheckJNI (already on)
03-07 15:45:32.653: E/Trace(710): error opening trace file: No such file or directory (2)
03-07 15:45:33.033: W/dalvikvm(710): Unable to resolve superclass of Lcom/actionbarsherlock/app/SherlockMapFragment; (785)
03-07 15:45:33.033: W/dalvikvm(710): Link of class 'Lcom/actionbarsherlock/app/SherlockMapFragment;' failed
03-07 15:45:33.033: W/dalvikvm(710): Unable to resolve superclass of Lde/tutorials/comfreek/actionbar/AFragment; (584)
03-07 15:45:33.033: W/dalvikvm(710): Link of class 'Lde/tutorials/comfreek/actionbar/AFragment;' failed
03-07 15:45:33.033: E/dalvikvm(710): Could not find class 'de.tutorials.comfreek.actionbar.AFragment', referenced from method de.tutorials.comfreek.actionbar.MainActivity.onCreate
03-07 15:45:33.033: W/dalvikvm(710): VFY: unable to resolve const-class 793 (Lde/tutorials/comfreek/actionbar/AFragment;) in Lde/tutorials/comfreek/actionbar/MainActivity;
03-07 15:45:33.033: D/dalvikvm(710): VFY: replacing opcode 0x1c at 0x0029
03-07 15:45:33.163: D/AndroidRuntime(710): Shutting down VM
03-07 15:45:33.173: W/dalvikvm(710): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
03-07 15:45:33.173: E/AndroidRuntime(710): FATAL EXCEPTION: main
03-07 15:45:33.173: E/AndroidRuntime(710): java.lang.NoClassDefFoundError: de.tutorials.comfreek.actionbar.AFragment
03-07 15:45:33.173: E/AndroidRuntime(710):      at de.tutorials.comfreek.actionbar.MainActivity.onCreate(MainActivity.java:24)
03-07 15:45:33.173: E/AndroidRuntime(710):      at android.app.Activity.performCreate(Activity.java:5008)
03-07 15:45:33.173: E/AndroidRuntime(710):      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
03-07 15:45:33.173: E/AndroidRuntime(710):      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
03-07 15:45:33.173: E/AndroidRuntime(710):      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
03-07 15:45:33.173: E/AndroidRuntime(710):      at android.app.ActivityThread.access$600(ActivityThread.java:130)
03-07 15:45:33.173: E/AndroidRuntime(710):      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
03-07 15:45:33.173: E/AndroidRuntime(710):      at android.os.Handler.dispatchMessage(Handler.java:99)
03-07 15:45:33.173: E/AndroidRuntime(710):      at android.os.Looper.loop(Looper.java:137)
03-07 15:45:33.173: E/AndroidRuntime(710):      at android.app.ActivityThread.main(ActivityThread.java:4745)
03-07 15:45:33.173: E/AndroidRuntime(710):      at java.lang.reflect.Method.invokeNative(Native Method)
03-07 15:45:33.173: E/AndroidRuntime(710):      at java.lang.reflect.Method.invoke(Method.java:511)
03-07 15:45:33.173: E/AndroidRuntime(710):      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-07 15:45:33.173: E/AndroidRuntime(710):      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-07 15:45:33.173: E/AndroidRuntime(710):      at dalvik.system.NativeStart.main(Native Method)

Il problema non sembra dovuto alle mappe, ma alla classe che estende il Fragment, infatti se compilo con SherlockFragment al posto di SherlockMapFragment va tutto ok

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Tab e compatibilità app
« Risposta #7 il: 07 Marzo 2013, 17:10:11 CET »
0
Io ho il tuo stesso codice e mi funziona perfettamente. Controlla il modo in cui hai importato la libreria delle mappe.