2016-11-27 8 views
0

こんにちは、これは私の最初の投稿ですstackoverflow、私はAndroidスタジオについて非常に具体的な質問があります。私はProgressbarを終了する前に数秒待ってから終了する方法を実装したいと思います。Androidスタジオ:スレッドまたはマルチプロセッシングなしのプログレスバー

スレッドまたはマルチプロセッシングを使用せずにこのメソッドを作成したいと考えています。

私は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(); 
} 

Iもわずか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++; 
     } 
    } 
} 

答えて

1

のすべてのコードを追加簡単なコメント - Javaでは、メソッドは小文字で始まります。これは、メソッドRunProgressBar()の名前をrunプログレスバー()。これは規約であり、通常はコードを読みやすくします。

ここでの問題は、ProgressBarのインスタンスでRunProgressBar()を呼び出そうとしていることです。カスタムメソッドRunProgressBar()はMainActivityクラスに属します。つまり、progressBar.RunProgressBar()の行をRunProgressBar()またはthis.RunProgressBar()に変更する必要があります。

2番目の問題は、View.OnClickListenerを実装していますが、@Overrideのメソッドpublic void onClick(View v)を実装していないことです。

ソート後、コードをコンパイルする必要があります。

+0

ありがとうございます。E.Makarovas! – Murdok

0

おかげさまで、あなたの助けとアドバイスをいただき、ありがとうございました。 ほとんどすべてのプログレスバーで動作させる方法を改革しました!

ここでは、必要な人のためのコードです!

public void runProgressBar(ProgressBar p, int delay){ 
     int counter = 0; 
     while(counter < p.getMax()){ 
      p.setProgress(counter); 
      SystemClock.sleep(delay); 
      counter++; 
     } 
} 
関連する問題