大家好,这是我关于stackoverflow的第一篇文章,我有一个关于Android Studio的非常具体的问题。我想实现一个允许我启动Progressbar的方法 - 在完成之前等待几秒钟 - 然后结束它。
我想在不使用线程或MultiProcessing的情况下创建此方法。
我不是java的真正专家,我无法弄清楚为什么我的方法不起作用/不能编译!
这是方法代码:
public void RunProgressBar(){
int counter = 0;
while(counter < progressBar.getMax()){
progressBar.setProgress(counter);
SystemClock.sleep(200);
counter++;
}
}
该方法用于:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.RunProgressBar();
}
如果我还添加了MainActivity的所有代码
package com.xedoll.green_player;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.ProgressBar;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.RunProgressBar();
}
public void RunProgressBar(){
int counter = 0;
while(counter < progressBar.getMax()){
progressBar.setProgress(counter);
SystemClock.sleep(200);
counter++;
}
}
}
答案 0 :(得分:2)
快速评论 - 在Java中,方法以小写字母开头,这意味着您的方法RunProgressBar()应该命名为runProgressBar()。这是一个惯例,遵循它们通常会使代码更具可读性。
这里的问题是你试图在ProgressBar的一个实例上调用RunProgressBar()。您的自定义方法RunProgressBar()属于MainActivity类。这意味着行progressBar.RunProgressBar()
应更改为RunProgressBar()
或this.RunProgressBar()
。
我看到的第二个问题是你正在实现View.OnClickListener,但你并不是@Override
方法public void onClick(View v)
。
对此进行排序后,代码应该编译。
答案 1 :(得分:0)
感谢EMakarovas的帮助和建议,它有效! 我重新设计了方法,使其几乎可以在任何进度条上运行!
以下是需要它的人的代码!
public void runProgressBar(ProgressBar p, int delay){
int counter = 0;
while(counter < p.getMax()){
p.setProgress(counter);
SystemClock.sleep(delay);
counter++;
}
}