2013-10-27 2 views
0

У меня возникла проблема с моей главной активностью после того, как я получил ответ от httpUrlConnection. Вот мой onPostExecute методНевозможно запустить новую активность из 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(); 

    } 

} 

Когда я пытаюсь начать новую деятельность от метода проследовать() я получаю 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(); 

}

А вот м y logCat: LogCat

Заранее благодарен!

+0

Ваша учетная запись AsyncTask - это активность? и что такое «слуга»? –

+0

My AsyncTask - это класс для себя, называемый HttpConnect, а serv - это класс, который я создал для создания нового класса. –

ответ

0

Ваша проблема в том, когда вы начинаете свою деятельность на линии:

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

Ну, создает намерение, который пытается добраться до LoginActivity.this, который, вероятно, не существует!
Вместо этого вы должны предоставить экземпляр действительной активности, которая в настоящее время работает.

Решение, которое я могу вам предложить, это перейти к proceed() экземпляру текущей активности и поставить вместо LoginActivity.this.
Если у вас нет текущей активности, попробуйте вместо этого добавить контекст приложения и добавить в него флаг новой задачи.

+0

Итак, после 2 часов попыток разных решений я наконец решил свою проблему. Мне пришлось передать контекст приложения так же, как вы сказали. Большое спасибо! –

Смежные вопросы