2016-05-12 13 views
0

MainActivityにデータをロードしていて、読み込み中にスプラッシュ画面を表示しようとしています。メインアクティビティでのみデータを読み込んでいるので別のアクティビティを使用できないため、ダイアログを使用して画像を表示しています。MainActivityでダイアログshow()が動作しません

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. 

    } 

ただし、oncreateメソッドが完了するまでダイアログは表示されません。これを実行すると、ダイアログ画面が表示されません。私がload_dialog.dismiss()をオフにすると、すべてのデータがロードされた後にロードされます。

誰でも問題を特定できますか?

は解決:

問題は、あなたがレンダラの建設を初期化しない限り、setContentViewが開始しませんでした。

だから私はGLSurfaceViewのonSurfaceCreated機能でデータロードをシフトしなければなりませんでした。したがって、コンテンツビューが初期化された後にデータがロードされました。

+1

コメント 'loading_dialog.dismiss(); '行が表示されているかどうか? –

+0

はい、すべてのファイルが読み込まれた後でその表示を却下するとコメントします。 ENDタグの後に – sabby

+0

が表示されています。これらの行為はどうしていますか? 'verifyPermissions(this); manager =新しいマネージャ(これ、res); 'AsyncTaskはありますか? –

答えて

0

フレームレイアウトを使用します。画像をフレームに追加し、xmlファイル内のアクティビティフレームを非表示にします。データが読み込まれると、アクティビティフレームが表示され、ピクチャフレームの可視性が失われます。

1

AsyncTaskを使用して試してみて、doInBackground()法上のデータをロードします。

AsyncTaskを使用してthisを参照してください。

+0

RawフォルダのデータをGLSurfaceViewクラスにロードしています。 Asyncクラスでどのように実行できますか? nullオブジェクトでの実行を通知するエラーが発生しました – sabby

1

ネットワークコールを行っている場合は、VolleyまたはRetroFitライブラリを使用してください。そうでない場合は、Async task onPreExecute()メソッドを使用してダイアログを表示し、doInBackground()を使用して任意の操作を行い、onPostExecute()を使用してダイアログを閉じます。

+0

非同期タスクでクラスを初期化するにはどうすればよいですか?その与えるエラー。私はこれを試してみました:主な活動で クラス... MyAsyncTask MTは=新しいMyAsyncTask(); mt.execute(); – sabby

+0

エラーとは何ですか? logcatを確認してください。 – esfox

関連する問題