在Splash Screen Android上显示Toast

时间:2011-09-29 11:18:44

标签: android splash-screen toast

我遇到了以下问题。如果检测到没有网络连接,我希望我的应用程序退出。我的应用程序以启动画面启动。如果设备上没有网络连接,可以显示启动画面,然后显示吐司。然后终止申请

我在启动画面代码中有类似的内容:

在onCreate()

ConnectivityManager connectivitymanager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkinfo = connectivitymanager.getActiveNetworkInfo();
        connected = networkinfo != null && networkinfo.isAvailable()
                && networkinfo.isConnected();
        Log.v("Network state : ", connected + "");

        Thread splashThread = new Thread() {
            @Override
            public void run() {
                try {
                    int waited = 0;
                    while (waited < 5000) {
                        sleep(100);
                        waited += 100;
                    }
                } catch (InterruptedException e) {
                    // do nothing
                } finally {
                    Looper.prepare();
                    if (connected == false) {
                        Toast.makeText(
                                splashscreenActivity.this,
                                "No Network Connection is available on device.",
                                Toast.LENGTH_LONG).show();
                        finish();
                        System.exit(0);
                    } else {
                        finish();
                        startActivity(new Intent(splashscreenActivity.this,
                                mainActivity.class));
                    }
                    Looper.loop();
                }
            }
        };
        splashThread.start();

1.请看我的代码并指导我如何出示吐司。 2.或者建议我做一些其他更好的方法

由于

编辑:

谢谢大家回复:

我选择了Dharmendra通过启动画面活动来展示吐司的方式:

适用的代码是:

if (connected == false) {
            splashscreenActivity.this.runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    Toast.makeText(splashscreenActivity.this,
                            "No Internet Connection.", 3000).show();
                }
            });
            finish();
        } else {
            //migrate to main activity from splashscreen
        }

4 个答案:

答案 0 :(得分:3)

你可以这样做,使用Handler。在else条件中输入以下代码

  Handler mHandler = new Handler(Looper.getMainLooper());

mHandler.post(new Runnable() {
                                public void run() {

                                    Toast.makeText(Splash.this, "Network error", Toast.LENGTH_LONG).show(); 
                                      finish();

                                }
                            });

或者,我在我的申请中这样做:

if(status.equals("CONNECTED"))
                        {
                        startActivity(new Intent(Splash.this,Activity.class));
                        finish();
                        }else
                        { 
                        startActivity(new Intent(Splash.this,NetworkError.class));
                        finish();
                        }

其中NetworkError类显示另一个布局,其图像类似于“No Network ,,,,”(或者您要显示的任何内容而不是splash ...)

答案 1 :(得分:2)

您正在创建并显示来自线程的Toast,因此可能不会调用

您必须编写此代码

splashscreenActivity.this.runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    Toast.makeText(c, "Internet connection not currently available.", 3000).show();
                }
            });

答案 2 :(得分:0)

只需添加一个if else块。(使用ur连接网络信息)

if(connected){
//put the splash thread here
}else{
 finish();
}

答案 3 :(得分:0)

如果您不希望捕获任何异常,则使用finally块。在你的代码中,将所有代码放在else循环中,如果时间为5000,则转到else语句并执行它。如果你要添加catch,你最终可以删除。