[英]Show Toast on SplashScreen Android
我陷入了以下問題:如果我的應用程序未檢測到網絡連接,則希望我的應用程序退出。我的應用程序以啟動屏幕啟動。如果設備上沒有網絡連接,則可以顯示啟動屏幕,然后顯示吐司,然后終止該應用程序
我的初始屏幕代碼中有這樣的內容:
內部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
}
您可以這樣操作,使用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 ,,,”(或您要顯示而不是飛濺的任何內容...)顯示帶有圖像的另一種布局
您正在從線程創建並顯示Toast,因此可能不會調用它
您必須編寫此代碼
splashscreenActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(c, "Internet connection not currently available.", 3000).show();
}
});
只需添加一個if else塊。(使用您的連接網絡信息)
if(connected){
//put the splash thread here
}else{
finish();
}
如果您不希望捕獲任何異常,則使用finally塊。 在您的代碼中,將所有代碼置於else循環中,如果經過了5000分鍾,則轉到else語句並執行它。 如果要添加漁獲,則可以最終將其刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.