Показать тост на SplashScreen Android - PullRequest
2 голосов
/ 29 сентября 2011

У меня возникла следующая проблема. Я хочу, чтобы мое приложение закрывалось, если оно не обнаруживает сетевого подключения. Мое приложение запускается с заставкой. Можно отобразить заставку и всплывающую подсказку, если на устройстве отсутствует сетевое соединение. прекратить заявку

У меня есть что-то вроде этого в моем коде заставки:

Внутри 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. Или предложите мне другой лучший способ сделать это

Спасибо

РЕДАКТИРОВАТЬ:

Спасибо всем за ответ:

Я выбрал способ показа тоста Дхармендрой с помощью заставки:

Код, который работал для:

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 ]

3 голосов
/ 29 сентября 2011

Вы можете сделать это так, используя 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 показывает другой макет с изображением типа «Нет сети ,,,,» (или что вы хотите показать вместо всплеска ...)

2 голосов
/ 29 сентября 2011

Вы создаете и показываете тост из темы, поэтому он может не называться

Вы должны написать этот код

splashscreenActivity.this.runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    Toast.makeText(c, "Internet connection not currently available.", 3000).show();
                }
            });
0 голосов
/ 29 сентября 2011

Блок finally используется, если вы не хотите перехватывать какие-либо исключения. В своем коде поместите весь свой код в цикл else. Если время 5000 истекло, перейдите к оператору else и выполните его. Если вы добавляете улов, вы можете удалить его окончательно.

0 голосов
/ 29 сентября 2011

Просто добавьте блок if else (используя информацию о вашем сетевом соединении)

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