对话框show()在MainActivity中不起作用

时间:2016-05-12 08:09:59

标签: android dialog splash-screen

我在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.

    }

但是对话框没有显示,直到oncreate方法完成。如果我运行这个,我就看不到对话框了。如果我关闭loading_dialog.dismiss(),那么在加载所有数据后加载它。

任何人都可以发现问题吗?

解决:

问题是,除非您初始化渲染器的构造,否则setContentView不会启动。

所以我不得不在GLSurfaceView的onSurfaceCreated函数中移动数据加载。因此,在初始化内容视图后加载数据。

3 个答案:

答案 0 :(得分:1)

尝试使用AsyncTask并在doInBackground()方法上加载数据。

使用AsyncTask时请参阅this

答案 1 :(得分:1)

如果您正在进行网络通话,请使用Volley或RetroFit库。另外使用Async task onPreExecute()方法显示对话框,doInBackground()做你想做的事情,onPostExecute()去掉对话框。

答案 2 :(得分:0)

使用框架布局。将图片添加到框架并隐藏xml文件中的活动框架。加载数据后,活动框架可见,图片框架可见性消失。