2011-11-16 38 views
1

我對Android應用程序來說非常新穎。當沒有Wi-Fi連接時,我的應用程序正在通過從SQLite數據庫讀取數據進行工作。應用程序的入口點是登錄屏幕。當有Wi-Fi連接時,在loginActivity本身中啓動loginActivity

當沒有Wi-Fi連接且沒有緩存時,我們彈出一條消息來設置Wi-Fi連接。一旦他們設置了Wi-Fi,那麼我們需要開始獲得初始配置,以在服務器的登錄屏幕上顯示一些數據。

問題是我不知道如何重新啓動應用程序,一旦我們設置Wi-Fi從服務器獲取數據。

+0

歡迎來到Stackoverflow!如果您發現回覆有幫助,請投票。如果回覆成功回答您的問題,請點擊旁邊的綠色複選標記以接受答案。另請看看http://stackoverflow.com/questions/how-to-ask關於如何寫出一個好問題的建議 –

回答

0

你還沒有真正給我們留下太多的東西,所以我能做的最好的就是給你一些高層次的建議。所有你需要做的就是一旦你完成了無線網絡設置,然後啓動另一個Intent來啓動你的登錄活動。所以,一旦你的WiFi設置完成後,做類似如下:

Intent loginActivity = new Intent(this, LoginActivity.class); 
startActivity(loginActivity); 

這是假設你是從延伸Context和您登錄活動類的名稱是LoginActivity類調​​用。

+0

作爲一個側面提示:你應該聽廣播的Wifi狀態改變。因此,當您收到廣播稱Wifi已更改爲「開啓」時,將啓動登錄活動。 – Darwind

+0

如果你提供了一些示例代碼來做到這一點,那將是一個很大的幫助。謝謝 –

+0

我在我的答案中添加了一些代碼。但是如果不知道更多關於你的節目的信息,我不能再給你任何東西。 –

0

如果沒有,無線網絡給他警告對話框和 ü應使用startActivityForResult()

protected void onActivityResult(int requestCode, int resultCode, 
      Intent data) 

這裏有一些教程獲得ûstartred:nice example

developer site

0

另外對我評論@ Kurtis的答案在這裏是一個快速和髒的示例代碼,您可以使用它來偵聽Wifi狀態更改...

public class TestProjectActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    // Register for Wifi state changes. 
    this.registerReceiver(wifiChangedReceiver, new IntentFilter(
      WifiManager.WIFI_STATE_CHANGED_ACTION)); 
} 

// BroadcastReceiver that will get notified when the Wifi state changes. 
private BroadcastReceiver wifiChangedReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context arg0, Intent arg1) { 
     int extraWifiState = arg1.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 
       WifiManager.WIFI_STATE_UNKNOWN); 

     // No need to listen for all the states, but it might be interesting 
     // at a later point ;) 
     switch (extraWifiState) { 
     case WifiManager.WIFI_STATE_DISABLED: 
      showToast("Wifi disabled..."); 
      break; 
     case WifiManager.WIFI_STATE_DISABLING: 
      showToast("Wifi disabling..."); 
      break; 
     case WifiManager.WIFI_STATE_ENABLED: 
      showToast("Wifi enabled..."); 
      break; 
     case WifiManager.WIFI_STATE_ENABLING: 
      showToast("Wifi enabling..."); 
      break; 
     default: 
      break; 
     } 
    } 
}; 

// Instead of showing a toast, you could launch a new activity. 
private void showToast(String action) { 
    Toast.makeText(this, action, Toast.LENGTH_LONG).show(); 
} 

// When leaving the activity that has registered for a broadcast, remember 
// to unregister the broadcast or you'll get an exception at some point. 
@Override 
protected void onStop() { 
    super.onStop(); 
    this.unregisterReceiver(wifiChangedReceiver); 
    } 
} 

有人可能會爭辯說,將BroadcastReceiver轉移到它自己的類中會更好。這可以通過創建自己的類並通過BroadcastReceiver擴展類來完成。

希望這有助於;-)

相關問題