我尝试了两种不同的方式在按钮上执行一些代码,一种是有效的,另一种是在我的手机上安装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从受保护的到公共固定的崩溃。
答案 0 :(得分:0)
考虑到你的“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);
}
答案 1 :(得分:0)
更改方法playOnClick从protected到public修复了崩溃。
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);
}
}
}