【发布时间】:2016-05-16 10:20:03
【问题描述】:
谢谢大家,我成功了!我必须放入一个开关 ((Button) v)
我是编码新手,不明白为什么我的代码不起作用。
我想将所有三个按钮组合在一个方法onClick() 下,android studio 告诉我一切都写得没有错误,但是当我运行应用程序时,它会立即关闭。
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: 致命异常: main 进程:com.example.trafficlight,PID:8223 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.Button.setText(java.lang.CharSequence)” 在 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.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5254) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
【问题讨论】:
-
ok,调用
setContentView后初始化所有Button里面的onCreate方法