2016-04-24 15 views
-2

にNullPointerExceptionが、私は、私は1つの活動は、簡略化のために削除さMainActivityアンドロイド - 私の活動

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 

    email = (EditText) findViewById(R.id.email); 
    password = (EditText) findViewById(R.id.password); 
    } 

    public void checkLogin(View view){ 
    final String emailText = email.getText().toString().trim(); 
    final String passwordTex = password.getText().toString().trim(); 
    StringRequest req = new StringRequest(Request.Method.POST, Constants.LOGIN_URL, successListener, errorListener) { 
      @Override 
      protected Map<String, String> getParams() { 
       Map<String, String> params = new HashMap<String, String>(); 
       params.put("email", emailText); 
       params.put("password", passwordTex); 
       return params; 
      } 
     }; 

     ReqQueue.getInstance().getRequestQueue().add(req); 
    } 

Listener functionsあるLogInActivityと呼ばれてい

this tutorialを次しています。私はNullPointeRExceptionを取得するコードを実行した場合

public class ReqQueue extends Application{ 
    private static ReqQueue instance; 
    private RequestQueue requestQueue; 
    private Context context; 

    @Override 
    public void onCreate(){ 
     super.onCreate(); 
     context = getApplicationContext(); 
     instance = this; 
    } 

    public static synchronized ReqQueue getInstance(){ 
     return instance; 
    } 

    public RequestQueue getRequestQueue(){ 
     if(requestQueue == null){ 
      requestQueue = Volley.newRequestQueue(context); 
     } 
     return requestQueue; 
    } 

    public <T> void addToReqQueue(Request<T> req){ 
     getRequestQueue().add(req); 
    } 
    } 

を次のように

ReQueueクラスです。私はそれが起こる位置を見つけた。この行でログインアクティビティのReqQueue.getInstance().getRequestQueue().add(req);が発生します。

インスタンスがnullです。しかし、チュートリアルで説明したように、onCreateメソッドでインスタンスを作成します。しかし、その作成方法は決して呼び出されませんでした。

私は自分のアクティビティclss自体ですべてのキューアクティビティを実行すると動作します。どうすれば解決できますか?

スタックエラー

4月24日16:24:39.254 10272から10272/com.gopsab.loginsystem E/AndroidRuntime:致命的な例外:メイン プロセス:com.gopsab.loginsystem、PID :10272 java.lang.IllegalStateException: アンドロイドのためのメソッドを実行できませんでした:のonClick を android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)で android.view.View.performClick(View.java:5198)android.os.Handler.handleCallback(Handler.java:739) android.os.Handler.dispatchMessage(Handler.java:95) とandroid.os.Looper.loop(Looper.java:148) とandroid.app.ActivityThread.main(ActivityThread.java:5417) でのjava .lang.reflect.Method.invoke(ネイティブメソッド) ( )com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:616)

によって引き起こさ: android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClickでjava.lang.reflect.Method.invoke(ネイティブメソッド) (AppCompatViewInflater.java:288でにjava.lang.reflect.InvocationTargetException )android.os.Handler.handleCallback(Handler.java:739)の android.view.View.performClick )android.os.Handler.dispatchMessage(Handler.java:95) android.os.Looper.loop(Looper.java:148) android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(ネイティブメソッド) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit。Javaの:com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616で726) )

によって引き起こさ:java.lang.NullPointerExceptionが:試みは、仮想 方法「com.android.volleyを起動します。 java.lang.reflect.Method.invokeでヌルオブジェクト 参照 でcom.gopsab.loginsystem.LoginActivity.checkLogin(LoginActivity.java:73) にREQUESTQUEUE com.gopsab.utils.ReqQueue.getRequestQueue()」 (ネイティブメソッド) at android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)android.os.Handler.handleCallback(Handler.java:739)の$ PerformClick.run(View.java:21147) android.os.Handler.dispatchMessage(Handler.java:95)の android.os.Looper.loop(Looper.java:148) android.app.ActivityThread.main(ActivityThread.java:5417) at com.android.internal.os.ZygoteInit.mainで com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) (でjava.lang.reflect.Method.invoke(ネイティブメソッド) ZygoteInit.ja VA:616)

+0

閉じるには何がありますか?チュートリアルで何かをスキップしたのはあなたのせいです。 NullPointersは一般的にdownvoted –

答えて

0

私の推測では:あなたはcom.gopsab.utils.ReqQueueを指し、マニフェストの<application>要素にandroid:name属性を追加しませんでした。その結果、onCreate()は呼び出されず、instanceはまだnullです。

+0

ああ私の神。私は名前がちょうど命名のためだと思った。私はこれを試してみましょう。 –

+0

@GopsAB: 'android:label'はユーザーが見ることができる表示名です。 'android:name'はその特定の要素のJavaクラスを識別するためのものです。 ''は' android:name'を必要としませんが、カスタム 'Application'サブクラスではなく' android.app.Application'を使用します。 – CommonsWare

0

ReqQueueでアクティビティコンテキストをコンストラクタ経由で渡すと、この例外は発生しません。この段階では、getApplicationContext()を使用しないでください。

関連する問題