0

httpUrlConnection から応答を受け取った後、mainActivity を開始できません。これが私の onPostExecute メソッドです

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

    }

メソッド handleResult() では、応答コードを処理しています。応答コードが 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();

}

そして、ここに私のログキャットがあります: LogCat

前もって感謝します!

4

1 に答える 1

0

問題は、次の行でアクティビティを開始するときです。

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

LoginActivity.thisさて、おそらく存在しないものに到達しようとするインテントを作成します!
これの代わりに、現在実行中の実際のアクティビティのインスタンスを提供する必要があります。

私が提案できる解決策proceed()は、現在実行中のアクティビティのインスタンスに渡し、代わりに配置することですLoginActivity.this
現在のアクティビティがない場合は、代わりにアプリケーションのコンテキストを配置して、新しいタスクのフラグを追加してみてください。

于 2013-10-27T14:07:45.287 に答える