ありがとう、私は管理しました!Androidの問題onClick()
私はコーディングが新しく、なぜ自分のコードが動作しないのか理解できません。 私はすべての3つのボタンを1つのメソッドonClick()
で結合したいとアンドロイドスタジオはすべてがエラーなしで書かれていることを私に示していますが、アプリケーションを実行すると即座に閉じます。
package com.example.trafficlight;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
final Button LightSide = (Button) findViewById(R.id.LightSide);
final Button DarkSide = (Button) findViewById(R.id.DarkSide);
final Button Chubaka = (Button) findViewById(R.id.Chubaka);
private RelativeLayout mRelativeLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRelativeLayout = (RelativeLayout) findViewById(R.id.relativeLayout);
LightSide.setOnClickListener(this);
DarkSide.setOnClickListener(this);
Chubaka.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.LightSide:
LightSide.setText("LightSide");
mRelativeLayout.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
case R.id.DarkSide:
DarkSide.setText("DarkSide");
mRelativeLayout.setBackgroundColor(getResources().getColor(R.color.colorRed));
case R.id.Chubaka:
Chubaka.setText("Chubakka");
mRelativeLayout.setBackgroundColor(getResources().getColor(R.color.colorBrown));
}
}
}
これはバグコード 05-16 12である:43:06.874 8223から8223/com.example.trafficlight E/AndroidRuntime:致命的な例外:メイン プロセス:com.example.trafficlight、PID:8223 java.lang.NullPointerException:NULLオブジェクト参照で仮想メソッド 'void android.widget.Button.setText(java.lang.CharSequence)'を呼び出そうとしました at com.example.trafficlight.MainActivity.onClick(MainActivity.java:36) ) android.view.View.performClick(View.java:4780) android.view.View $ PerformClick.run(View.java:19866)android.os.Looper.loop(Looper.java:135) でandroid.os.Handler.dispatchMessage(Handler.java:95) でandroid.os.Handler.handleCallback(Handler.java:739) ででandroid.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(ネイティブメソッド) at java.lang.reflect.Method.invoke(Method.java:372) at comあなたが移動する必要がありますcom.android.internal.os.ZygoteInit.mainで.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:903) (ZygoteInit.java:698)
OK、 'setContentView'を呼び出した後、すべてのボタンのonCreateメソッドを初期化します。 –