2017-03-14 19 views
0

http応答コードの処理に問題があります。問題は、私が実行する特定の関数を与えないので、アプリケーションがクラッシュすることです。 この場合、Httresponsecode401の場合、ユーザーをログイン画面に戻したいと思っています。そうしないと、ユーザーは引き続きアプリを使用できます。私の現在のコードではアクティビティを拡張できないパッケージからインテントを開始する

私は、次のしている:

public boolean isUnauthorized(JSONObject response){ 
    try { 
     if(response.getInt("StatusCode") == 401) { 
      return true; 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    return false; 
} 

私が欲しいもの、ここでこの機能アプリを呼び出すときに幅の広い、それはすべての画面上で同じことをするでしょうように呼び出すことです。

Intent i = new Intent(Register.class, Register.activity); 
startactivity(i); 

ResponseHandlerアクティビティを拡張することができないので、しかし、これは不可能です。私がこれを行うと、looper.prepare()を含むスタックトレースエラーが呼び出される必要があります。

ここから新しい意図をどのように呼び出すことができますか?上記のクラスはcomponentsというフォルダにあり、正しい答えを得るためにはmy appのアクティビティが別のフォルダにあります。

+1

このクラスを呼び出すアクティビティのアクティビティコンテキストを渡してから、新しいインテントを作成するときに使用します。つまり、インテントのインテント=新しいインテント(コンテキスト、Register.class) –

+0

アクティビティクラス名の代わりにContextを間違って渡しました。 –

答えて

0

あなたのインテントの引数として現在のアクティビティまたはアプリケーションコンテキストを渡す必要があります。

それは、クラスの中にある場合、それはフラグメント内で、その後

getActivity().startActivity(getActivity(), newActivity.class); 

の場合:あなたはフラグメントを持っている場合

context.startActivity(context, newActivity.class); 
+0

は、説明したのと同じ方法を使用しています。どうもありがとうございました – Crizz

1
Intent i = new Intent(Register.class, Register.activity); 
startactivity(i); 

これは

Intent i = new Intent(CurrentClass.this, Activity.class); 
startactivity(i); 

する必要があります

Intent i = new Intent(getActivity(), Activity.class); 
getActivity().startactivity(i); 
関連する問題