2013-10-27 51 views
0

我在從httpUrlConnection獲得響應後啓動mainActivity時遇到問題。 這是我的onPostExecute方法無法從onPostExecute運行新活動

protected void onPostExecute(String[] result) { 
     serv.httphelper.handleResults(result); 

    } 

在方法handleResult()IM處理響應代碼。如果響應代碼是200,我想運行我loginActivity類

public void handleResults(String[] result) { 

    status = result[0].toString(); 
    instructions = result[1].toString(); 
    jsonString = result[2]; 

    Log.d("DEBUG", status); 

    if (status.equals("200")) { 
     serv.loginActivity.proceed(); 

    } else if (status.equals("400")) { 
     serv.loginActivity.loginError(); 

    } else if (status.equals("401")) { 
     serv.loginActivity.loginError(); 

    } 

} 

內的新方法,當我試圖從proceed()方法,我得到一個NullPointerException異常開始一個新的活動

public void proceed(){ 
    startActivity(new Intent (LoginActivity.this, MainActivity.class)); 
    Log.d("TEST", "Proceed success"); 


} 

我大家很奇怪,服務類:

public class Service { 

public static HttpHelper httphelper = new HttpHelper(); 
public static HttpConnect conn = new HttpConnect(); 
public static LoginActivity loginActivity = new LoginActivity(); 

}

這裏爲m y logCat: LogCat

在此先感謝!

+0

你的AsyncTask在哪個Activity?什麼是'服務'? –

+0

我的AsyncTask本身就是一個類,名爲HttpConnect,而serv只是我爲創建新類所做的一個類。 –

回答

0

你的問題是當你在該行開始的活動:

startActivity(new Intent (LoginActivity.this, MainActivity.class)); 

嗯,你創建一個試圖去LoginActivity.this這可能並不存在的意圖!
取而代之,您必須提供當前正在運行的實際活動的實例。

我建議你的解決方案是將當前正在運行的活動的實例傳遞給proceed(),並將其替換爲LoginActivity.this
如果您沒有當前活動,請嘗試放置應用程序的上下文,並將其添加爲新任務的標誌。

+0

好吧,經過兩個小時的嘗試不同的解決方案,我終於解決了我的問題。正如你所說的,我必須通過應用程序上下文。非常感謝! –

相關問題