Android Studio:没有线程或多处理的进度条
Android Studio: Progress Bar without thread or multiprocessing
大家好,这是我在 Whosebug 上的第一个 post,我有一个关于 Android Studio 的非常具体的问题。我想实现一种允许我启动进度条的方法 - 在它完成之前等待几秒钟 - 然后结束它。
我想在不使用线程或多进程的情况下创建此方法。
我不是 java 方面的真正专家,我不明白为什么我的方法不能 work/doesn 编译!
这是方法的代码:
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++;
}
}
}
快速评论 - 在 Java 中,方法以小写字母开头,这意味着您的方法 RunProgressBar() 应命名为 runProgressBar()。这是一个约定,遵循它们通常会使代码更具可读性。
这里的问题是您试图在 ProgressBar 的实例上调用 RunProgressBar()。您的自定义方法 RunProgressBar() 属于 MainActivity class。这意味着行 progressBar.RunProgressBar()
应更改为 RunProgressBar()
或 this.RunProgressBar()
.
我看到的第二个问题是您正在实施 View.OnClickListener,但没有 @Override
方法 public void onClick(View v)
。
排序后代码应该可以编译。
感谢 EMakarovas 的帮助和建议,它有效!
我重新发明了该方法,使其适用于几乎所有进度条!
这里有代码给需要的人!
public void runProgressBar(ProgressBar p, int delay){
int counter = 0;
while(counter < p.getMax()){
p.setProgress(counter);
SystemClock.sleep(delay);
counter++;
}
}
大家好,这是我在 Whosebug 上的第一个 post,我有一个关于 Android Studio 的非常具体的问题。我想实现一种允许我启动进度条的方法 - 在它完成之前等待几秒钟 - 然后结束它。
我想在不使用线程或多进程的情况下创建此方法。
我不是 java 方面的真正专家,我不明白为什么我的方法不能 work/doesn 编译!
这是方法的代码:
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++;
}
}
}
快速评论 - 在 Java 中,方法以小写字母开头,这意味着您的方法 RunProgressBar() 应命名为 runProgressBar()。这是一个约定,遵循它们通常会使代码更具可读性。
这里的问题是您试图在 ProgressBar 的实例上调用 RunProgressBar()。您的自定义方法 RunProgressBar() 属于 MainActivity class。这意味着行 progressBar.RunProgressBar()
应更改为 RunProgressBar()
或 this.RunProgressBar()
.
我看到的第二个问题是您正在实施 View.OnClickListener,但没有 @Override
方法 public void onClick(View v)
。
排序后代码应该可以编译。
感谢 EMakarovas 的帮助和建议,它有效! 我重新发明了该方法,使其适用于几乎所有进度条!
这里有代码给需要的人!
public void runProgressBar(ProgressBar p, int delay){
int counter = 0;
while(counter < p.getMax()){
p.setProgress(counter);
SystemClock.sleep(delay);
counter++;
}
}