2016-05-12 10 views
0

Ich lade einige Daten in MainActivity und versuche, einen Begrüßungsbildschirm während des Ladens anzuzeigen. Ich kann keine andere Aktivität verwenden, da ich nur Daten in der Hauptaktivität lade, also verwende ich Dialoge, um ein Bild anzuzeigen.Dialog show() funktioniert nicht in MainActivity

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     loading_dialog = new Dialog(MainActivity.this); 
     loading_dialog.setContentView(R.layout.loading); 
     loading_dialog.show(); 
     Log.d(TAG,"show"); 
     verifyPermissions(this); 
     res=new Resourses(this); 
     manager = new Manager(this, res); 
     loading_dialog.dismiss(); 
     setContentView(R.layout.activity_main); 
     Log.d(TAG,"End"); 

     view = (GLSurfaceView) findViewById(R.id.view); 

     view.setEGLConfigChooser(8, 8, 8, 8, 16, 0); 

     view.setRenderer(manager); 



     additionalSkuList = new ArrayList<String>(); 
     for(int i=0;i<10;i++) 
     { 
      additionalSkuList.add(res.id[i]); 
     } 
     String base64EncodedPublicKey; 
     base64EncodedPublicKey= getResources().getString(R.string.inappkey); 
     mHelper = new IabHelper(this, base64EncodedPublicKey); 
     mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { 
      public void onIabSetupFinished(IabResult result) { 
       //  Log.d("main", "m here"); 
       if (!result.isSuccess()) { 
        // Oh noes, there was a problem. 
        Log.d(TAG, "Problem setting up In-app Billing: " + result); 
       } 
       // Hooray, IAB is fully set up! 
       isIAB = true; 
        Log.d(TAG,""+isIAB); 
       mHelper.queryInventoryAsync(true, additionalSkuList, mQueryFinishedListener); 
       // Log.d("main", "" + isIAB + " " + isLoad); 
      } 
     }); 
     // ATTENTION: This was auto-generated to implement the App Indexing API. 
     // See https://g.co/AppIndexing/AndroidStudio for more information. 

    } 

Der Dialog wird jedoch nicht angezeigt, bis die oncreate-Methode ausgeführt wurde. Wenn ich das ausführe, kann ich den Dialog nicht sehen. Wenn ich loading_dialog.dismiss() abstelle, wird das Laden nach dem Laden aller Daten durchgeführt.

Kann jemand das Problem identifizieren?

GELÖST:

Das Problem war, nicht setContentView nicht initiieren, wenn Sie Renderer der Konstruktion initialisieren.

Also musste ich die Datenlast in der onSurfaceCreated-Funktion von GLSurfaceView verschieben. Daher wurden Daten geladen, nachdem die Inhaltsansicht initialisiert wurde.

+1

Wenn Kommentar 'loading_dialog.dismiss();' Zeile dann wird es angezeigt oder nicht? –

+0

ja, wenn ich die ablehnen kommentieren, nachdem alle Dateien geladen sind. Nach dem END-Tag zeigt es – sabby

+0

was machst du es diese Pfandrechte .. 'verifyPermissions (this); manager = neuer Manager (this, res); 'Gibt es eine AsyncTask ?? –

Antwort

0

Rahmenlayout verwenden. Fügen Sie ein Bild zu einem Rahmen hinzu und blenden Sie den Aktivitätsrahmen in der XML-Datei aus. Sobald die Daten geladen sind, machen Sie den Aktivitätsrahmen sichtbar und die Bildrahmensichtbarkeit ist verschwunden.

1

Versuchen Sie eine AsyncTask und laden Sie die Daten auf die doInBackground() Methode.

Siehe this unter Verwendung eines AsyncTask.

+0

Ich lade Daten aus Raw-Ordner in die GLSurfaceView-Klasse. Wie kann ich es in Async-Klasse ausführen? Es gibt Fehler bei der Ausführung von Null-Objekt – sabby

1

Wenn Sie einen Netzwerkanruf tätigen, verwenden Sie die Volley- oder RetroFit-Bibliotheken. Verwenden Sie andernfalls die Async-Task onPreExecute(), um das Dialogfeld anzuzeigen, doInBackground(), um die gewünschten Aktionen auszuführen, und onPostExecute(), um das Dialogfeld zu schließen.

+0

Wie kann ich eine Klasse in Async-Task initialisieren? es gibt Fehler. Ich habe das versucht: Klasse ... in Hauptaktivität MyAsyncTask mt = neue MyAsyncTask(); mt.execute(); – sabby

+0

Was sagt der Fehler? Überprüfen Sie das Logbuch. – esfox