2013-03-19 19 views
5

Sto usando Worklight per un'applicazione Android,Worklight App Splash su Android

Quando provo ad aggiungere una splash screen

public class MyApp extends WLDroidGap { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     super.setIntegerProperty("splashscreen", R.drawable.splash); 
     super.loadUrl(getWebMainFilePath(),2000); 
    }  
} 

vedo la schermata iniziale, ma poi, ho un nero schermo e l'applicazione va in crash per essere precisi, mostra uno schermo nero, e quando ho Toccare il pulsante opzioni, si blocca

quando rimuovo il" 2000"

public class MyApp extends WLDroidGap { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     super.setIntegerProperty("splashscreen", R.drawable.splash); 
     super.loadUrl(getWebMainFilePath()); 
    }  
} 

Non vedo la schermata iniziale e l'app funziona.

vedo che qualcuno talked about that in IBM forums

e ci sono molti post del blog parlando di splashsccreens per Android con PhoneGap here e here, ma non vedo una soluzione in questi posti per il mio problema

Ecco le registro app dopo lo schianto:

I/SurfaceFlinger( 93): [SurfaceFlinger] frames:2, duration:2.262000, fps:0.883908 
I/InputDispatcher( 246): channel '426b7be0 NavigationBar (server)' ~ finishDispatchCycle - 4.8ms since event, 3.0ms since dispatch, handled=true 
E/AndroidRuntime(15615): FATAL EXCEPTION: main 
E/AndroidRuntime(15615): java.lang.NullPointerException 
E/AndroidRuntime(15615): at com.worklight.androidgap.WLDroidGap.onPrepareOptionsMenu(WLDroidGap.java:163) 
E/AndroidRuntime(15615): at com.worklight.androidgap.WLDroidGap.onCreateOptionsMenu(WLDroidGap.java:159) 
E/AndroidRuntime(15615): at android.app.Activity.onCreatePanelMenu(Activity.java:2458) 
E/AndroidRuntime(15615): at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:389) 
E/AndroidRuntime(15615): at com.android.internal.policy.impl.PhoneWindow.onKeyDownPanel(PhoneWindow.java:770) 
E/AndroidRuntime(15615): at com.android.internal.policy.impl.PhoneWindow.onKeyDown(PhoneWindow.java:1435) 
E/AndroidRuntime(15615): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1824) 
E/AndroidRuntime(15615): at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:3492) 
E/AndroidRuntime(15615): at android.view.ViewRootImpl.handleFinishedEvent(ViewRootImpl.java:3464) 
E/AndroidRuntime(15615): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2601) 
E/AndroidRuntime(15615): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(15615): at android.os.Looper.loop(Looper.java:137) 
E/AndroidRuntime(15615): at android.app.ActivityThread.main(ActivityThread.java:4524) 
E/AndroidRuntime(15615): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(15615): at java.lang.reflect.Method.invoke(Method.java:511) 
E/AndroidRuntime(15615): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809) 
E/AndroidRuntime(15615): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576) 
E/AndroidRuntime(15615): at dalvik.system.NativeStart.main(Native Method) 
+0

è possibile fornire i registri dello schianto? –

+0

@ Alécio Ho modificato la domanda, per aggiungere i registri degli arresti anomali – WiPhone

+0

Ora sto usando Woklight 6.0.0 e nessuno di questi frammenti di codice funziona. – WiPhone

risposta

0

Non so se sarà d'aiuto ma ho fatto il mio splash screen in questo modo. Forse si dovrebbe provare questo:

setContentView(R.layout.splash_screen); 

    Handler handler = new Handler(); 

    // 3 seconds later splashscreen will open 
    handler.postDelayed(new Runnable() { 

     public void run() { 


      finish(); 

      // to pass main screen 

      Intent intent = new Intent(SplashScreen.this, AnaMenuActivity.class); 
      SplashScreen.this.startActivity(intent); 

     } 

    }, 3000); 
6

Se siete su Worklight 5.0.5.x provare questo:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    super.loadUrl(getWebMainFilePath()); // yes, this is an extra invocation 
    super.setIntegerProperty("splashscreen", R.drawable.splash); 
    super.loadUrl(getWebMainFilePath(), 5000); 
} 

Se siete su Worklight 5.0.6.x provare questo:

public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    super.setIntegerProperty("splashscreen", R.drawable.splash); 
    super.bindBrowser(appView); 
    super.loadUrl(getWebMainFilePath(), 5000); 
} 
+0

Ho provato questo con worklight 6.0.0, che sto usando ora, e non funziona – WiPhone

-1

È inoltre possibile codificare la propria schermata iniziale JavaScript. Non sono belli come gli splash screen nativi, ma a mio parere vale la pena menzionarli. Lavorano anche x-platform. Ecco un esempio di dojo.

  1. Crea DIV nel codice HTML:

    <div id="splash"></div> 
    
  2. Creare styleClass per DIV Elemento:

    #splash { 
        width:100%; height:100%; margin:0; padding:0; 
        background-color: red !important; 
        position:absolute; 
        z-index:999; 
    } 
    
  3. Nascondi DIV After dojo.ready:

    function dojoInit() { 
        require([ "dojo", ...modules... ], function(dojo) { 
         dojo.ready(function() { 
          hideSplash(); 
         }); 
        }); 
    } 
    
    function hideSplash(){ 
        // Dojo Fade Animation 
        dojo.fadeOut({ 
         node:"splash", 
         onEnd: function(){ 
          dojo.style("splash", "display", "none"); 
         } 
        }).play(); 
    } 
    
1

Se si utilizza 6.0+, non è necessario scrivere alcun codice nativo. Basta inserire un risultato chiamato "splash.png" sotto Android native dir (android/native/res/drawable) e rimuovere quello predefinito. Worklight mostrerà automaticamente l'immagine come schermata iniziale all'avvio dell'app.

Problemi correlati