1

私は2つのクラスを持っています。クラス A は、進行状況バーが使用されるアクティビティです。クラスBは、進行状況バーが更新されるアクティビティがありません。しかし、非アクティビティクラス B からプログレスバーを呼び出すと。nullポインタ例外が発生しました。

クラスA:-

ProgressBar progressBar; 
 @Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);
progressBar = (ProgressBar) findViewById(R.id.progressBar1);}

クラス B:-

 new Thread(new Runnable() {

             int i = 0;
             int progressStatus = 0;

             public void run() {
                 while (progressStatus < 100) {
                     progressStatus += doWork();
                     try {
                         Thread.sleep(500);
                     } catch (InterruptedException e) {
                         e.printStackTrace();
                     }

                     // Update the progress bar
                     ((Activity) cnt).runOnUiThread(new Runnable() {

                         public void run() {
                            XMPPClient xc = new XMPPClient();
                            xc.progressBar = new ProgressBar(cnt);
                            xc.progressBar.setProgress(progressStatus);
                        //  Toast.makeText(cnt, "ok", Toast.LENGTH_SHORT).show();
                             i++;
                         }
                     });
                 }
             }
             private int doWork() {

                 return i * 3;
              }
        }).start();

when i added this line :-  xc.progressBar = new ProgressBar(cnt);
then i did not get nullpointerexception. But now my progress bar is **not updating.**

誰か助けてください。

4

2 に答える 2

4
ProgressBar progressBar; 

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);
    progressBar = (ProgressBar) findViewById(R.id.progressBar1);

    ClassB classb = new ClassB(this, progressBar);
}

public class ClassB{

    private Context cnt;
    private ProgressBar progressBar;

    public ClassB(Context context, ProgressBar pBar){
         cnt = context;
         progressBar = pBar;
    }
}

これで、前のコードで行ったように新しいものを作成する代わりに、progressBar を使用できるようになりました! 簡単に概要を...

于 2013-06-18T13:06:43.383 に答える