0

AsyncTaskでProgressVisibility(true)を設定したい。メインのAsyncTaskであり、すべて問題ありません。

public class GlanceActivity extends SherlockActivity implements ActionBar.OnNavigationListener {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    //This has to be called before setContentView and you must use the
        //class in com.actionbarsherlock.view and NOT android.view
        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
    setContentView(R.layout.activity_glance);
    }

    public class TestTask extends AsyncTask<String, String, ArrayList<String>> {
        @Override
        public void onPreExecute() {
            // Show IndeterminateProgressBar
            setSupportProgressBarIndeterminateVisibility(true);
        }

        @Override
        protected ArrayList<String> doInBackground(String... params) {
            // Load some Data...
            return null;
        }

        protected void onPostExecute(ArrayList<String> arg) {
            // Hide IndeterminateProgressBar
            setProgressBarIndeterminateVisibility(false);
        }
    }
}

しかし、AsyncTaskの追加ファイルを生成したい場合、setProgressBarIndeterminateVisibilityはGroupPageTaskに対して未定義です...

このメソッドを別のAsyncTaskファイルで使用するにはどうすればよいですか?

GlanceActivity.java

public class GlanceActivity extends SherlockActivity implements ActionBar.OnNavigationListener {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //This has to be called before setContentView and you must use the
        //class in com.actionbarsherlock.view and NOT android.view
        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
        setContentView(R.layout.activity_glance);
    }
}

GroupPageTask.java

public class GroupPageTask extends AsyncTask<String, String, ArrayList<String>> {
    @Override
    public void onPreExecute() {
        // Show IndeterminateProgressBar
        setSupportProgressBarIndeterminateVisibility(true);
    }

    @Override
    protected ArrayList<String> doInBackground(String... params) {
        // Load some Data...
        return null;
    }

    protected void onPostExecute(ArrayList<String> arg) {
        // Hide IndeterminateProgressBar
        setProgressBarIndeterminateVisibility(false);
    }
}
4

2 に答える 2

3

AsyncTaskの構築中にコンテキストを渡すことができます。

public class GroupPageTask extends AsyncTask<String, String, ArrayList<String>> 
{
  private Context context;

  public AsyncTask(Context context) 
  {
    this.context = context;
  }

  protected void onPreExecute() 
  {
    ((Activity) context).setProgressBarIndeterminateVisibility(true);
  }

  protected void onPostExecute(ArrayList<String> arg) 
  {
    ((Activity) context).setProgressBarIndeterminateVisibility(false);
  }
}

次に、アクティビティの新しいコンストラクターを使用してAsyncTaskを作成します。

GroupPageTask groupPageTask = new GroupPageTask(this);
于 2012-11-09T07:14:08.693 に答える
0

Matt Handysの回答で、私は正しい方法を見つけました...

GlanceActivity.java

public class GlanceActivity extends SherlockActivity implements ActionBar.OnNavigationListener {
    public static Context context;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        GroupPageTask groupPageTask = new GroupPageTask(getSherlock());
    }
}

GroupPageTask.java

public class GroupPageTask extends AsyncTask<String, String, ArrayList<Mannschaft>> {
    private ActionBarSherlock sherlock;

    @Override
    public void onPreExecute() {
        // Show IndeterminateProgressBar
        sherlock.setProgressBarIndeterminateVisibility(true);
    }

    protected void onPostExecute(ArrayList<Mannschaft> arg) {
        sherlock.setProgressBarIndeterminateVisibility(false);
    }
}
于 2012-11-10T09:13:27.800 に答える