Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 文本显示在进度条之后-Android_Java_Android - Fatal编程技术网

Java 文本显示在进度条之后-Android

Java 文本显示在进度条之后-Android,java,android,Java,Android,我正在安卓系统中玩进度条,希望在进度条运行后显示我的文本。但我的文字同时出现。显然是放错地方了?但是它应该在哪里呢 package com.example.bmi; import android.os.Bundle; import android.os.Handler; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.EditText;

我正在安卓系统中玩进度条,希望在进度条运行后显示我的文本。但我的文字同时出现。显然是放错地方了?但是它应该在哪里呢

package com.example.bmi;

import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;

public class MainActivity extends Activity {
    private ProgressBar progressBar;
    private int progressStatus = 0;
    private Handler handler = new Handler ();
    //private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


    }


    public void calculateClickHandler(View view) {

        if (view.getId() == R.id.button1) {

            progressBar = (ProgressBar) findViewById(R.id.progressBar1);
            //textView = (TextView) findViewById(R.id.textView1);
              // Start long running operation in a background thread
              new Thread(new Runnable() {
                 public void run() {
                    while (progressStatus < 100) {
                       progressStatus += 1;
                            // Update the progress bar and display the 
                            //current value in the text view
                            handler.post(new Runnable() {


                                        public void run() {
                                           progressBar.setProgress(progressStatus);
                                           //textView.setText(progressStatus+"/"+progressBar.getMax());
                                        }
                            });



                              try {
                                // Sleep for 200 milliseconds. 
                                //Just to display the progress slowly
                                Thread.sleep(50);
                              } catch (InterruptedException e) {
                                  e.printStackTrace();
                                }
                 }


              }
           }).start();

              EditText weightText = (EditText) findViewById(R.id.editText1);
                EditText heightText = (EditText) findViewById(R.id.editText2);
                TextView result = (TextView) findViewById(R.id.textView4);

                float weight = Float.parseFloat(weightText.getText().toString());
                float height = Float.parseFloat(heightText.getText().toString());

                float bmi = calcBMI(weight, height);
                float roundedbmi = (float) (Math.round(bmi*100.0)/100.0);

                String yoFat = fat(roundedbmi);

                result.setText("Your BMI is: " + roundedbmi + "\n" + yoFat); 


        }

    }


    private float calcBMI(float weight, float height) {
        // TODO Auto-generated method stub
        return (float) (weight / (height * height));
    }


    private String fat (float bmi) {
        if (bmi < 16) {
            return "Yo Skinny ass needs some cake!";
        }
        else if (bmi < 18.5) {
            return "Stop eating them salads!";
        }
        else if (bmi < 25) {
            return "Grrrr, Just the way I like it!";
        }
        else if (bmi < 30) {
            return "Put down that cupcake!";
        }
        else {
            return "Ohh you Fat, You love the cake!";
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}
package com.example.bmi;
导入android.os.Bundle;
导入android.os.Handler;
导入android.app.Activity;
导入android.view.Menu;
导入android.view.view;
导入android.widget.EditText;
导入android.widget.ProgressBar;
导入android.widget.TextView;
公共类MainActivity扩展了活动{
私人ProgressBar ProgressBar;
私有状态=0;
私有处理程序=新处理程序();
//私有文本视图文本视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void calculateClickHandler(视图){
if(view.getId()==R.id.button1){
progressBar=(progressBar)findViewById(R.id.progressBar1);
//textView=(textView)findViewById(R.id.textView1);
//在后台线程中启动长时间运行的操作
新线程(newrunnable()){
公开募捐{
而(进度状态<100){
progressStatus+=1;
//更新进度条并显示
//文本视图中的当前值
handler.post(新的Runnable(){
公开募捐{
progressBar.setProgress(progressStatus);
//textView.setText(progressStatus+“/”+progressBar.getMax());
}
});
试一试{
//睡眠200毫秒。
//只是为了慢慢地显示进度
睡眠(50);
}捕捉(中断异常e){
e、 printStackTrace();
}
}
}
}).start();
EditText weightText=(EditText)findViewById(R.id.editText1);
EditText heightText=(EditText)findViewById(R.id.editText2);
TextView结果=(TextView)findViewById(R.id.textView4);
float-weight=float.parseFloat(weightText.getText().toString());
float height=float.parseFloat(heightText.getText().toString());
浮动bmi=calcBMI(体重、身高);
浮点四舍五入bmi=(浮点)(数学四舍五入(bmi*100.0)/100.0);
字符串yoFat=fat(四舍五入BMI);
result.setText(“您的体重指数为:“+roundedbmi+”\n“+yoFat”);
}
}
专用浮子calcBMI(浮子重量、浮子高度){
//TODO自动生成的方法存根
返回(浮动)(重量/(高度*高度));
}
私人字符串脂肪(浮动bmi){
如果(体重指数<16){
return“你这个瘦小的屁股需要一些蛋糕!”;
}
否则,如果(体重指数<18.5){
返回“停止吃沙拉!”;
}
否则,如果(体重指数<25){
return“Grrrr,正是我喜欢的方式!”;
}
否则,如果(体重指数<30){
return“放下那个纸杯蛋糕!”;
}
否则{
回答“哦,你这个胖子,你喜欢蛋糕!”;
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
}

实例化线程下的代码不会等到线程完成可运行后再执行

相反,在新线程的runnable末尾重新输入UI线程,并设置文本:

    new Thread(new Runnable() {
        @Override
        public void run() {
            while (progressStatus < 100) {
                // Progress update...
            }

            // Progress finished, re-enter UI thread and set text
            handler.post(new Runnable() {
                @Override
                public void run() {
                    EditText weightText = (EditText) findViewById(R.id.editText1);
                    EditText heightText = (EditText) findViewById(R.id.editText2);
                    TextView result = (TextView) findViewById(R.id.textView4);

                    float weight = Float.parseFloat(weightText.getText().toString());
                    float height = Float.parseFloat(heightText.getText().toString());

                    float bmi = calcBMI(weight, height);
                    float roundedbmi = (float) (Math.round(bmi*100.0)/100.0);

                    String yoFat = fat(roundedbmi);

                    result.setText("Your BMI is: " + roundedbmi + "\n" + yoFat);
                }
            });
        }
    }).start();
new线程(new Runnable()){
@凌驾
公开募捐{
而(进度状态<100){
//进度更新。。。
}
//进度完成,重新输入UI线程并设置文本
handler.post(新的Runnable(){
@凌驾
公开募捐{
EditText weightText=(EditText)findViewById(R.id.editText1);
EditText heightText=(EditText)findViewById(R.id.editText2);
TextView结果=(TextView)findViewById(R.id.textView4);
float-weight=float.parseFloat(weightText.getText().toString());
float height=float.parseFloat(heightText.getText().toString());
浮动bmi=calcBMI(体重、身高);
浮点四舍五入bmi=(浮点)(数学四舍五入(bmi*100.0)/100.0);
字符串yoFat=fat(四舍五入BMI);
result.setText(“您的体重指数为:“+roundedbmi+”\n“+yoFat”);
}
});
}
}).start();

Runnable
inception!谢谢皮特·施密茨——太完美了!Pete Schmitz,你知道如何让进度条在完成后消失吗?
progressBar.setVisibility(View.GONE)应该可以做到这一点。只需确保它位于从处理程序发布的一个Runnable中。