应用程序在按钮水龙头上崩溃
问题描述:
我尝试了两种不同的方式在按钮水龙头上执行某些代码,其中一种可以正常工作,另一种则会使用Android 4.1的手机崩溃应用程序。应用程序在按钮水龙头上崩溃
如果我添加onCreate方法内的点击侦听器然后它的工作,但如果我用不同的方法做,然后应用程序崩溃(我没有添加方法名称的onClick事件的按钮)。
这作品:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button button = (Button) findViewById(R.id.button1);
if (button != null) {
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar);
if (progressBar != null) {
progressBar.setVisibility(View.VISIBLE);
}
}
});
}
}
这崩溃按钮自来水应用:
protected void playOnClick (View v) {
Button button = (Button) v;
if (button != null) {
ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar);
if (progressBar != null) {
progressBar.setVisibility(View.VISIBLE);
}
}
}
任何想法,为什么?今天开始学习Android开发。
编辑:
从保护公众固定的碰撞改变方法playOnClick。
答
更改方法playOnClick从保护到公共修复崩溃。
public void playOnClick (View v) {
Button button = (Button) v;
if (button != null) {
ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar);
if (progressBar != null) {
progressBar.setVisibility(View.VISIBLE);
}
}
}
答
考虑到你的按钮和进度存在于你的“activity_main”布局,绑定在你的onCreate(享有安全的方式)应该是这样的:
使用时private Button button;
private ProgressBar progressBar;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button1);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
progressBar.setVisibility(View.VISIBLE);
}
});
}
应用程序不会崩溃的方法:
protected void playOnClick (View v) {
progressBar.setVisibility(View.VISIBLE);
}