2016-08-20 7 views
0

まず、私はアンドロイドSDKを初めて使いましたが、私はJavaで多少の経験があります。私はSDKに入るためにチュートリアルを試みています。私は必要なものすべてを書き終えましたが、実行するとアプリがクラッシュして、この致命的なエラーが発生します:View.OnClickListenerチュートリアルアプリのクラッシュを引き起こします

java.lang.NullPointerException: Attempt to invoke virtual method 'void 
android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' 
on a null object reference 

明らかに、View.OnClickListenerに問題があります。スペルチェック。大文字、チェック括弧、チェック大括弧、チェック。セミコロン、チェック。次に、View.OnClickListenerのドキュメントをチェックしました。唯一の方法はonClick(View v)です。うーん、うまくいって、そこに問題はない。 IDEは私に他のエラーを与えていません。だからこの時点で、私は外の助けが必要だと思う。 referanceの場合、これはボタンのIDです:

android:id="@+id/button" 

これはMainActivity.java

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.Button; 
import android.content.Intent; 
import android.view.View; 

public class MainActivity extends AppCompatActivity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     Button button = (Button) findViewById(R.id.button); 
     button.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View v){ 
       goToSecondActivity(); 
      } 
     }); 
    } 

    private void goToSecondActivity() { 
     Intent intent = new Intent(this, SecondActivity.class); 
     startActivity(intent); 
    } 
} 

そして、ここでlogcat

08-20 16:00:01.171 2565-2565/com.example.joe.helloworld E/AndroidRuntime: FATAL EXCEPTION: main 
                     Process: com.example.joe.helloworld, PID: 2565 
                     java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.joe.helloworld/com.example.joe.helloworld.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference 
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                      at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                      at android.os.Looper.loop(Looper.java:148) 
                      at android.app.ActivityThread.main(ActivityThread.java:5417) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference 
                      at com.example.joe.helloworld.MainActivity.onCreate(MainActivity.java:16) 
                      at android.app.Activity.performCreate(Activity.java:6237) 
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
                      at android.app.ActivityThread.-wrap11(ActivityThread.java)  
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
                      at android.os.Handler.dispatchMessage(Handler.java:102)  
                      at android.os.Looper.loop(Looper.java:148)  
                      at android.app.ActivityThread.main(ActivityThread.java:5417)  
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  

答えて

2

あなたがレイアウトでsetContentView()を呼び出すために忘れてしまいましたさidにはButtonが含まれています。

コンテンツレイアウトがないため、findViewById()への呼び出しはnullを返します。

+0

Yeap ..あなたは正しいです..私は書かれたコードに焦点を当て、すべてが良いようです..その不足している行(Y考えていませんでした) –

+0

これはそれでした。ありがとうございました! – onyex

0

表示するユーザーのレイアウトを設定するのを忘れた: setContentView(R.layout.activity_main);代わりに使用したのも

button.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v){ 
      goToSecondActivity(); 
     } 
    }); 

}

はただ、これを使用する:

button.setOnClickListener(new Button.OnClickListener() 
    { 
     @Override 
     public void onClick(View v){ 
      goToSecondActivity(); 
     } 
    }); 

} setOnClickListener内の代わりにビューの新しいButton.OnClickListenerを使用することを意味します

。 OnClickListener

+0

これの利点は何ですか?私は以下を使用します: button.setOnClickListener(new OnClickListener(){ @Override パブリックvoid onClick(ビューv){ }} –

0
setContentView(R.layout.activity_main); 

super.onCreate後に右(...)

関連する問題