Android的异步任务进度条onProgressUpdate进度条、任务、Android、onProgressUpdate

2023-09-04 13:32:25 作者:太过唯美会沉醉#

我是一个新的程序员。我见过很多的教程,但不明白什么是错的。我想创建一个异步任务进度。然而,它总是崩溃我的应用程序。

下面是主的应用程序:

 包pt.flag.ensemble;

导入了java.util.Random;

进口pt.flag.ensemble.task.AsyncTaskBar;

进口android.app.Activity;
进口android.content.Context;
进口android.content.Intent;
进口android.content.Shared preferences;
进口android.media.MediaPlayer;
进口android.os.Bundle;
进口android.view.Menu;
进口android.view.MenuItem;
进口android.view.View;
进口android.widget.Button;
进口android.widget.ImageButton;
进口android.widget.ProgressBar;
进口android.widget.Toast;

公共类间隔延伸活动{

    私有静态间隔实例;
    私人上下文的背景下;
    私人字符串的答案;
    INT right_question;
    INT wrong_question;
    INT randomInt2;
    公共进度的进度;




    @覆盖
    保护无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_intervals);

        //初始化声音
        最后的MediaPlayer Sound1例子= MediaPlayer.create(Intervals.this,
                R.raw.maj2);
        最后的MediaPlayer SOUND2 = MediaPlayer.create(Intervals.this,
                R.raw.maj3);
        最后的MediaPlayer sound3 = MediaPlayer.create(Intervals.this,
                R.raw.maj4);

        //进度条
        例如=这一点;
        进度进度=(进度)findViewById(R.id.Progressbar);
        progressBar.setProgress(0);


        //播放方法
        最后的ImageButton播放=(的ImageButton)findViewById(R.id.Play);
        Play.setOnClickListener(新View.OnClickListener(){

            @覆盖
            公共无效的onClick(视图查看){
                新AsyncTaskBar()执行()。
                Play.setEnabled(假);
                //生成随机数
                随机randomGenerator =新的随机();
                INT randomInt = randomGenerator.nextInt(3)+ 1;
                randomInt2 = randomInt;



                //选择合适的音效播放
                    开关(randomInt){
                    情况1:
                        sound1.start();
                        回答=M2;
                        打破;
                    案例2:
                        sound2.start();
                        回答=M3;
                        打破;
                    案例3:
                        sound3.start();
                        回答=P4;
                        打破;
                    }

            }
        });

        //音频重复方法
        按钮重复=(按钮)findViewById(R.id.Repeat);
        Repeat.setOnClickListener(新View.OnClickListener(){

            @覆盖
            公共无效的onClick(视图查看){



                    //选择合适的音效播放
                    开关(randomInt2){
                    情况1:
                        sound1.start();
                        新AsyncTaskBar()执行()。
                        回答=M2;
                        打破;
                    案例2:
                        sound2.start();
                        新AsyncTaskBar()执行()。
                        回答=M3;
                        打破;
                    案例3:
                        sound3.start();
                        新AsyncTaskBar()执行()。
                        回答=P4;
                        打破;
                    }


            }
        });
    }

    //回答方法
    公共无效buttonClicked2(查看视图){
        按钮clickedButton =(按钮)视图;
        如果(clickedButton.getText()的toString()。等于(答案)){
            Toast.makeText(Intervals.this,你说得对!,Toast.LENGTH_LONG)
                    。显示();

            right_question = right_question + 1;


            最后的ImageButton播放=(的ImageButton)findViewById(R.id.Play);
            Play.setEnabled(真正的);

            //通过结果
            共享preferences共享preF = getShared preferences(
                    INTERVALRIGHTS,Context.MODE_PRIVATE);
            共享preferences.Editor编辑=共享pref.edit();
            editor.putInt(分数,right_question);
            editor.commit();

        } 其他 {
            Toast.makeText(Intervals.this,你错了!,Toast.LENGTH_LONG)
                    。显示();

            wrong_question = wrong_question + 1;

            //通过结果
            共享preferences共享preF02 = getShared preferences(
                    INTERVALWRO​​NGS,Context.MODE_PRIVATE);
            共享preferences.Editor编辑=共享pref02.edit();
            editor.putInt(SCORE02,wrong_question);
            editor.commit();

        }
    }

    @覆盖
    公共布尔onCreateOptionsMenu(功能菜单){
        //充气菜单;这增加了项目操作栏,如果它是present。
        。getMenuInflater()膨胀(R.menu.intervals,菜单);
        返回true;
    }

    @覆盖
    公共布尔onOptionsItemSelected(菜单项项){
        //处理动作栏项目点击这里。将操作栏
        //自动在主/向上按钮操作的点击,只要
        //你在AndroidManifest.xml中指定一个父活动。
        开关(item.getItemId()){
        案例R.id.action_settings:
            意向意图=新的意图(Intervals.this,IntervalResults.class);
            startActivity(意向);
            打破;
        默认:
            返回super.onOptionsItemSelected(项目);
        }
        返回true;
    }

        公共静态间隔​​getApp(){返回实例; }
}
 

下面是AsyncTask的类

 包pt.flag.eventapp.task;

进口pt.flag.eventapp.Main;
进口android.os.AsyncTask;
进口android.os.SystemClock;
进口android.widget.Toast;

公共类ShowDialogAsyncTask扩展的AsyncTask<太虚,整型,太虚> {
    INT progress_status;

    @覆盖
    在preExecute保护无效(){
        // TODO自动生成方法存根
        super.on preExecute();
        //Toast.makeText(Main.getApp(),"Invoke在preExecute(),Toast.LENGTH_SHORT).show();
        progress_status = 0;
        //Main.getApp().txt_percentage.setText("downloading 0%);
    }

    @覆盖
    保护无效doInBackground(虚空...... PARAMS){
        而(progress_status< 100){
            progress_status + = 2;
            publishProgress(progress_status);
            SystemClock.sleep(300);
        }
        返回null;
    }
    @覆盖
    保护无效onProgressUpdate(整数...值){
        super.onProgressUpdate(值);
        //Main.getApp().progressBar.setProgress(values​​[0]);
        //Main.getApp().txt_percentage.setText("downloading+值[0] +%);
}
    @覆盖
    保护无效onPostExecute(无效的结果){
        super.onPostExecute(结果);
        //Toast.makeText(Main.getApp(),调用onPostExecute(),Toast.LENGTH_SHORT).show();
        //Main.getApp().txt_percentage.setText("download完成);
    }
}
 
Android异步任务AsyncTask的使用与原理分析

下面是日志:

  08-10 20:38:11.081:E / AndroidRuntime(21441):致命异常:主要
08-10 20:38:11.081:E / AndroidRuntime(21441):显示java.lang.NullPointerException
08-10 20:38:11.081:E / AndroidRuntime(21441):在pt.flag.ensemble.task.AsyncTaskBar.onProgressUpdate(AsyncTaskBar.java:34)
08-10 20:38:11.081:E / AndroidRuntime(21441):在pt.flag.ensemble.task.AsyncTaskBar.onProgressUpdate(AsyncTaskBar.java:1)
08-10 20:38:11.081:E / AndroidRuntime(21441):在android.os.AsyncTask $ InternalHandler.handleMessage(AsyncTask.java:618)
08-10 20:38:11.081:E / AndroidRuntime(21441):在android.os.Handler.dispatchMessage(Handler.java:99)
08-10 20:38:11.081:E / AndroidRuntime(21441):在android.os.Looper.loop(Looper.java:156)
08-10 20:38:11.081:E / AndroidRuntime(21441):在android.app.ActivityThread.main(ActivityThread.java:4977)
08-10 20:38:11.081:E / AndroidRuntime(21441):在java.lang.reflect.Method.invokeNative(本机方法)
08-10 20:38:11.081:E / AndroidRuntime(21441):在java.lang.reflect.Method.invoke(Method.java:511)
08-10 20:38:11.081:E / AndroidRuntime(21441):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
08-10 20:38:11.081:E / AndroidRuntime(21441):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-10 20:38:11.081:E / AndroidRuntime(21441):在dalvik.system.NativeStart.main(本机方法)
 

如果我是正确的,日志似乎表明在线路34处的AsyncTask类的错误,这是Intervals.getApp()progressBar.setProgress(数值[0]);。我只是不知道为什么...

此外,这里是我的xml文件

 < XML版本=1.0编码=UTF-8&GT?;
< RelativeLayout的的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =FILL_PARENT>

    <的ImageButton
        机器人:ID =@ + ID /播放
        机器人:contentDescription =@字符串/参考hello world
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:SRC =@可绘制/ ic_launcher
        机器人:layout_marginTop =50dp
        机器人:layout_marginLeft =50dp/>

    <按钮
        机器人:ID =@ + ID /重复
        机器人:contentDescription =@字符串/参考hello world
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:文本=重复
        机器人:layout_marginTop =50dp
        机器人:layout_toRightOf =@ + ID /播放
        机器人:layout_marginLeft =25dp/>

      <进度
        机器人:ID =@ + ID /进度
        风格=@安卓风格/ Widget.ProgressBar.Horizo​​ntal
        机器人:layout_width =FILL_PARENT
        机器人:layout_height =WRAP_CONTENT
        机器人:文本=测试
        机器人:layout_marginTop =20dp
        机器人:layout_below =@ + ID /播放/>

    <按钮
        机器人:ID =@ + ID / Octave_Button
        机器人:layout_width =52dp
        机器人:layout_height =80dp
        机器人:layout_marginLeft =5DP
        机器人:layout_below =@ + ID /进度
        机器人:的onClick =buttonClicked2
        机器人:layout_marginTop =100dp
        机器人:文本=@字符串/八度/>

    <按钮
        机器人:ID =@ + ID / min2_Button
        机器人:layout_width =52dp
        机器人:layout_height =80dp
        机器人:layout_below =@ + ID /进度
        机器人:的onClick =buttonClicked2
        机器人:layout_marginTop =100dp
        机器人:layout_toRightOf =@ + ID / Octave_Button
        机器人:文本=@字符串/ minor2/>

    <按钮
        机器人:ID =@ + ID / Maj2_Button
        机器人:layout_width =52dp
        机器人:layout_height =80dp
        机器人:layout_below =@ + ID /进度
        机器人:的onClick =buttonClicked2
        机器人:layout_marginTop =100dp
        机器人:layout_toRightOf =@ + ID / min2_Button
        机器人:文本=@字符串/ major2/>

    <按钮
        机器人:ID =@ + ID / min3_Button
        机器人:layout_width =52dp
        机器人:layout_height =80dp
        机器人:layout_below =@ + ID /进度
        机器人:的onClick =buttonClicked2
        机器人:layout_marginTop =100dp
        机器人:layout_toRightOf =@ + ID / Maj2_Button
        机器人:文本=@字符串/ minor3/>

    <按钮
        机器人:ID =@ + ID / Maj3_Button
        机器人:layout_width =52dp
        机器人:layout_height =80dp
        机器人:layout_below =@ + ID /进度
        机器人:的onClick =buttonClicked2
        机器人:layout_marginTop =100dp
        机器人:layout_toRightOf =@ + ID / min3_Button
        机器人:文本=@字符串/ major3/>

    <按钮
        机器人:ID =@ + ID / P4_Button
        机器人:layout_width =52dp
        机器人:layout_height =80dp
        机器人:layout_below =@ + ID /进度
        机器人:的onClick =buttonClicked2
        机器人:layout_marginTop =100dp
        机器人:layout_toRightOf =@ + ID / Maj3_Button
        机器人:文本=@字符串/ perfect4/>



    <按钮
        机器人:ID =@ + ID / A4_Button
        机器人:layout_width =52dp
        机器人:layout_height =80dp
        机器人:layout_below =@ + ID / Octave_Button
        机器人:的onClick =buttonClicked2
        机器人:layout_marginTop =15dp
        机器人:layout_marginLeft =5DP
        机器人:文本=@字符串/全音/>

    <按钮
        机器人:ID =@ + ID / P5_Button
        机器人:layout_width =52dp
        机器人:layout_height =80dp
        机器人:layout_below =@ + ID / min2_Button
        机器人:的onClick =buttonClicked2
        机器人:layout_marginTop =15dp
        机器人:layout_toRightOf =@ + ID / A4_Button
        机器人:文本=@字符串/ perfect5/>

    <按钮
        机器人:ID =@ + ID / minor6_Button
        机器人:layout_width =52dp
        机器人:layout_height =80dp
        机器人:layout_below =@ + ID / Maj2_Button
        机器人:的onClick =buttonClicked2
        机器人:layout_marginTop =15dp
        机器人:layout_toRightOf =@ + ID / P5_Button
        机器人:文本=@字符串/ minor6/>

     <按钮
        机器人:ID =@ + ID / Major6_Button
        机器人:layout_width =52dp
        机器人:layout_height =80dp
        机器人:layout_below =@ + ID / min3_Button
        机器人:的onClick =buttonClicked2
        机器人:layout_marginTop =15dp
        机器人:layout_toRightOf =@ + ID / minor6_Button
        机器人:文本=@字符串/ major6/>

    <按钮
        机器人:ID =@ + ID / minor7_Button
        机器人:layout_width =52dp
        机器人:layout_height =80dp
        机器人:layout_below =@ + ID / Maj3_Button
        机器人:的onClick =buttonClicked2
        机器人:layout_marginTop =15dp
        机器人:layout_toRightOf =@ + ID / Major6_Button
        机器人:文本=@字符串/ minor7/>


    <按钮
        机器人:ID =@ + ID / Major7_Button
        机器人:layout_width =52dp
        机器人:layout_height =80dp
        机器人:layout_below =@ + ID / P4_Button
        机器人:的onClick =buttonClicked2
        机器人:layout_marginTop =15dp
        机器人:layout_toRightOf =@ + ID / minor7_Button
        机器人:文本=@字符串/ major7/>
 

解决方案

我认为这是更好,如果你通过进度条作为参数传递给的AsyncTask

 最终进度进度=(进度)findViewById(R.id.Progressbar);
progressBar.setProgress(0);

//播放方法
最后的ImageButton播放=(的ImageButton)findViewById(R.id.Play);
Play.setOnClickListener(新View.OnClickListener(){

    @覆盖
    公共无效的onClick(视图查看){
        AsyncTaskBar任务=新AsyncTaskBar();
        task.setProgressBar(进度);
        task.execute();
    }
 

然后在你的的AsyncTask 声明 setProgressBar 方法:

 公共类ShowDialogAsyncTask扩展的AsyncTask<太虚,整型,太虚> {

进度条;

公共无效setProgressBar(进度条){
    this.bar =酒吧;
}

@覆盖
保护无效onProgressUpdate(整数...值){
    super.onProgressUpdate(值);
    如果(this.bar!= NULL){
        bar.setProgress(值[0]);
    }
}
 

您可以使用的TextView 你要设置这样做。

在任何情况下,既然你提到你在这个新的,你可能想看看广播/接收模式。这是怎么一回事呢:

启动异步任务,而无需设置进度条或任何东西。 定义的BroadcastReceiver ,实例化一个在你的活动和注册/注销其相应。 只要有你的异步任务进度更新只需要调用sendBroadcast的最新进展情况作为一个额外的意向。您可能需要实例化AsyncTask的时候传递一个上下文参数。 您的应用程序的广播接收机(你在步骤2中实例化的一个)的onHandleIntent方法将运行在UI线程上,使得所有的UI更新安全。

听起来有点势不可挡?这是第一次,但在这里的好处是:

这比通过UI对象的AsyncTask的干净多了。 您将了解到一个强大的Andr​​oid图案会派上用场的其他工作。 这会为你节省很多麻烦(和例外情况),如果你切换上下文或您的应用程序内存不足。

I am a new programmer. I have seen lots of tutorials but can't understand what is wrong. I am trying to create a ProgressBar from an Async Task. However it always crashes my application.

Here is the "main" app:

package pt.flag.ensemble;

import java.util.Random;

import pt.flag.ensemble.task.AsyncTaskBar;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ProgressBar;
import android.widget.Toast;

public class Intervals extends Activity {

    private static Intervals instance;
    private Context context;
    private String answer;
    int right_question;
    int wrong_question;
    int randomInt2;
    public ProgressBar progressBar;




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

        // initializing the sounds
        final MediaPlayer sound1 = MediaPlayer.create(Intervals.this,
                R.raw.maj2);
        final MediaPlayer sound2 = MediaPlayer.create(Intervals.this,
                R.raw.maj3);
        final MediaPlayer sound3 = MediaPlayer.create(Intervals.this,
                R.raw.maj4);

        //ProgressBar
        instance=this;
        ProgressBar progressBar = (ProgressBar) findViewById(R.id.Progressbar);
        progressBar.setProgress(0);


        // Play Methods
        final ImageButton Play = (ImageButton) findViewById(R.id.Play);
        Play.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                new AsyncTaskBar().execute();
                Play.setEnabled(false);
                // generate random number
                Random randomGenerator = new Random();
                int randomInt = randomGenerator.nextInt(3) + 1;
                randomInt2 = randomInt;



                // picking the right sound to play
                    switch (randomInt) {
                    case 1:
                        sound1.start();
                        answer = "M2";
                        break;
                    case 2:
                        sound2.start();
                        answer = "M3";
                        break;
                    case 3:
                        sound3.start();
                        answer = "P4";
                        break;
                    }

            }
        });

        //Audio Repeat Methods
        Button Repeat = (Button) findViewById(R.id.Repeat);
        Repeat.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {



                    // picking the right sound to play
                    switch (randomInt2) {
                    case 1:
                        sound1.start();
                        new AsyncTaskBar().execute();
                        answer = "M2";
                        break;
                    case 2:
                        sound2.start();
                        new AsyncTaskBar().execute();
                        answer = "M3";
                        break;
                    case 3:
                        sound3.start();
                        new AsyncTaskBar().execute();
                        answer = "P4";
                        break;
                    }


            }
        });
    }

    //Answering Methods
    public void buttonClicked2(View view) {
        Button clickedButton = (Button) view;
        if (clickedButton.getText().toString().equals(answer)) {
            Toast.makeText(Intervals.this, "You are Right!", Toast.LENGTH_LONG)
                    .show();

            right_question = right_question + 1;


            final ImageButton Play = (ImageButton) findViewById(R.id.Play);
            Play.setEnabled(true);

            // Passing results through
            SharedPreferences sharedPref = getSharedPreferences(
                    "INTERVALRIGHTS", Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = sharedPref.edit();
            editor.putInt("SCORE", right_question);
            editor.commit();

        } else {
            Toast.makeText(Intervals.this, "You are Wrong!", Toast.LENGTH_LONG)
                    .show();

            wrong_question = wrong_question + 1;

            // Passing results through
            SharedPreferences sharedPref02 = getSharedPreferences(
                    "INTERVALWRONGS", Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = sharedPref02.edit();
            editor.putInt("SCORE02", wrong_question);
            editor.commit();

        }
    }

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

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        switch (item.getItemId()) {
        case R.id.action_settings:
            Intent intent = new Intent(Intervals.this, IntervalResults.class);
            startActivity(intent);
            break;
        default:
            return super.onOptionsItemSelected(item);
        }
        return true;
    }

        public static Intervals getApp() { return instance; }
}

Here is the AsyncTask class

package pt.flag.eventapp.task;

import pt.flag.eventapp.Main;
import android.os.AsyncTask;
import android.os.SystemClock;
import android.widget.Toast;

public class ShowDialogAsyncTask extends AsyncTask<Void, Integer, Void> {
    int progress_status;

    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
        //Toast.makeText(Main.getApp(),"Invoke on PreExecute()", Toast.LENGTH_SHORT).show();
        progress_status = 0 ;
        //Main.getApp().txt_percentage.setText("downloading 0%");
    }

    @Override
    protected Void doInBackground(Void... params) {
        while (progress_status < 100){
            progress_status +=2;
            publishProgress(progress_status);
            SystemClock.sleep(300);
        }
        return null;
    }
    @Override
    protected void onProgressUpdate(Integer... values) {
        super.onProgressUpdate(values);
        //Main.getApp().progressBar.setProgress(values[0]);
        //Main.getApp().txt_percentage.setText("downloading" + values[0] + "%");
}
    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        //Toast.makeText(Main.getApp(), "Invoke onPostExecute()", Toast.LENGTH_SHORT).show();
        //Main.getApp().txt_percentage.setText("download complete");
    }
}

Here is the Log:

08-10 20:38:11.081: E/AndroidRuntime(21441): FATAL EXCEPTION: main
08-10 20:38:11.081: E/AndroidRuntime(21441): java.lang.NullPointerException
08-10 20:38:11.081: E/AndroidRuntime(21441):    at pt.flag.ensemble.task.AsyncTaskBar.onProgressUpdate(AsyncTaskBar.java:34)
08-10 20:38:11.081: E/AndroidRuntime(21441):    at pt.flag.ensemble.task.AsyncTaskBar.onProgressUpdate(AsyncTaskBar.java:1)
08-10 20:38:11.081: E/AndroidRuntime(21441):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:618)
08-10 20:38:11.081: E/AndroidRuntime(21441):    at android.os.Handler.dispatchMessage(Handler.java:99)
08-10 20:38:11.081: E/AndroidRuntime(21441):    at android.os.Looper.loop(Looper.java:156)
08-10 20:38:11.081: E/AndroidRuntime(21441):    at android.app.ActivityThread.main(ActivityThread.java:4977)
08-10 20:38:11.081: E/AndroidRuntime(21441):    at java.lang.reflect.Method.invokeNative(Native Method)
08-10 20:38:11.081: E/AndroidRuntime(21441):    at java.lang.reflect.Method.invoke(Method.java:511)
08-10 20:38:11.081: E/AndroidRuntime(21441):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
08-10 20:38:11.081: E/AndroidRuntime(21441):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-10 20:38:11.081: E/AndroidRuntime(21441):    at dalvik.system.NativeStart.main(Native Method)

If I am correct, the log seems to indicate an error in line 34 at the AsyncTask class, which is "Intervals.getApp().progressBar.setProgress(values[0]);" I just don't know why...

Also, here is my xml file

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ImageButton
        android:id="@+id/Play"
        android:contentDescription="@string/hello_world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher"
        android:layout_marginTop="50dp"
        android:layout_marginLeft="50dp" />

    <Button
        android:id="@+id/Repeat"
        android:contentDescription="@string/hello_world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Repeat"
        android:layout_marginTop ="50dp"
        android:layout_toRightOf="@+id/Play"
        android:layout_marginLeft="25dp" />

      <ProgressBar
        android:id="@+id/Progressbar"
        style="@android:style/Widget.ProgressBar.Horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="test"
        android:layout_marginTop="20dp"
        android:layout_below="@+id/Play" />

    <Button
        android:id="@+id/Octave_Button"
        android:layout_width="52dp"
        android:layout_height="80dp"
        android:layout_marginLeft="5dp"
        android:layout_below="@+id/Progressbar"
        android:onClick="buttonClicked2"
        android:layout_marginTop="100dp" 
        android:text="@string/octave" />

    <Button
        android:id="@+id/min2_Button"
        android:layout_width="52dp"
        android:layout_height="80dp"
        android:layout_below="@+id/Progressbar"
        android:onClick="buttonClicked2"
        android:layout_marginTop="100dp" 
        android:layout_toRightOf="@+id/Octave_Button"
        android:text="@string/minor2" />

    <Button
        android:id="@+id/Maj2_Button"
        android:layout_width="52dp"
        android:layout_height="80dp"
        android:layout_below="@+id/Progressbar"
        android:onClick="buttonClicked2"
        android:layout_marginTop="100dp" 
        android:layout_toRightOf="@+id/min2_Button"
        android:text="@string/major2" />

    <Button
        android:id="@+id/min3_Button"
        android:layout_width="52dp"
        android:layout_height="80dp"
        android:layout_below="@+id/Progressbar"
        android:onClick="buttonClicked2"
        android:layout_marginTop="100dp" 
        android:layout_toRightOf="@+id/Maj2_Button"
        android:text="@string/minor3" />

    <Button
        android:id="@+id/Maj3_Button"
        android:layout_width="52dp"
        android:layout_height="80dp"
        android:layout_below="@+id/Progressbar"
        android:onClick="buttonClicked2"
        android:layout_marginTop="100dp" 
        android:layout_toRightOf="@+id/min3_Button"
        android:text="@string/major3" />

    <Button
        android:id="@+id/P4_Button"
        android:layout_width="52dp"
        android:layout_height="80dp"
        android:layout_below="@+id/Progressbar"
        android:onClick="buttonClicked2"
        android:layout_marginTop="100dp" 
        android:layout_toRightOf="@+id/Maj3_Button"
        android:text="@string/perfect4" />



    <Button
        android:id="@+id/A4_Button"
        android:layout_width="52dp"
        android:layout_height="80dp"
        android:layout_below="@+id/Octave_Button"
        android:onClick="buttonClicked2"
        android:layout_marginTop="15dp"
        android:layout_marginLeft="5dp"
        android:text="@string/tritone" />

    <Button
        android:id="@+id/P5_Button"
        android:layout_width="52dp"
        android:layout_height="80dp"
        android:layout_below="@+id/min2_Button"
        android:onClick="buttonClicked2"
        android:layout_marginTop="15dp"
        android:layout_toRightOf="@+id/A4_Button"
        android:text="@string/perfect5" />

    <Button
        android:id="@+id/minor6_Button"
        android:layout_width="52dp"
        android:layout_height="80dp"
        android:layout_below="@+id/Maj2_Button"
        android:onClick="buttonClicked2"
        android:layout_marginTop="15dp"
        android:layout_toRightOf="@+id/P5_Button"
        android:text="@string/minor6" />

     <Button
        android:id="@+id/Major6_Button"
        android:layout_width="52dp"
        android:layout_height="80dp"
        android:layout_below="@+id/min3_Button"
        android:onClick="buttonClicked2"
        android:layout_marginTop="15dp"
        android:layout_toRightOf="@+id/minor6_Button"
        android:text="@string/major6" />

    <Button
        android:id="@+id/minor7_Button"
        android:layout_width="52dp"
        android:layout_height="80dp"
        android:layout_below="@+id/Maj3_Button"
        android:onClick="buttonClicked2"
        android:layout_marginTop="15dp"
        android:layout_toRightOf="@+id/Major6_Button"
        android:text="@string/minor7" />


    <Button
        android:id="@+id/Major7_Button"
        android:layout_width="52dp"
        android:layout_height="80dp"
        android:layout_below="@+id/P4_Button"
        android:onClick="buttonClicked2"
        android:layout_marginTop="15dp"
        android:layout_toRightOf="@+id/minor7_Button"
        android:text="@string/major7" />

解决方案

I think it's better if you pass the progress bar as an argument to the AsyncTask:

final ProgressBar progressBar = (ProgressBar) findViewById(R.id.Progressbar);
progressBar.setProgress(0);

// Play Methods
final ImageButton Play = (ImageButton) findViewById(R.id.Play);
Play.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View view) {
        AsyncTaskBar task = new AsyncTaskBar();
        task.setProgressBar(progressBar);
        task.execute();
    }

And then on your AsyncTask declare the setProgressBar method:

public class ShowDialogAsyncTask extends AsyncTask<Void, Integer, Void> {

ProgressBar bar;

public void setProgressBar(ProgressBar bar) {
    this.bar = bar;
}

@Override
protected void onProgressUpdate(Integer... values) {
    super.onProgressUpdate(values);
    if (this.bar != null) {
        bar.setProgress(values[0]);
    }
}

You could do the same with the TextView you're trying to set.

In any case, since you mentioned you're new at this you may want to take a look at the Broadcast/Receiver pattern. Here's how it goes:

Start the async task without setting the progress bar or anything. Define a BroadcastReceiver, instantiate one in your activity and register/unregister it accordingly. Whenever there's a progress update on your async task just call sendBroadcast with the progress update as an intent extra. You may need to pass a context parameter when instantiating the AsyncTask. The onHandleIntent method of your app's broadcast receiver (the one you instantiated on step 2) will run on the UI thread, making all those UI updates safe.

Sounds a bit overwhelming? It is at first, but here are the benefits:

It is much cleaner than passing UI objects to an AsyncTask. You will learn a powerful Android pattern that will come in handy in other endeavours. It will save you a lot of hassle (and exceptions) if you switch context or your app is low on memory.