数日間、いくつかの問題があります。メインスレッドで何かをしている間、(ダイアログではなく)単純なものを表示する必要がありProgressBar
ます...非常に単純な質問だと思いましたが、これはできません。助けてください。
最初に私はsetVisibility(View.VISIBLE)
前後に簡単に試しsetVisibility(View.GONE)
ました。
しかし、これは同じスレッドで実行されておりProgressBar
、関数が動作している間はフリーズしました。
今、私はこのコードを持っていますが、いくつかのエラーがあり、何が悪いのかわかりません。
私のシンプルなレイアウト:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ProgressBar
android:id="@+id/loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone" />
</FrameLayout>
私は基本的な活動をしています:
public class BaseActivity extends Activity {
public ProgressBar loading;
public class ProgressBarShow extends AsyncTask<Void, Void, Void> {
protected Void doInBackground(Void... unused) {
return(null);
}
protected void onProgressUpdate() {
}
protected void onPreExecute() {
loading.setVisibility(View.VISIBLE);
}
protected void onPostExecute() {
}
}
}
そして最後に私の作業活動はBaseActivity
public class SearchActivity extends BaseActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
loading = (ProgressBar) findViewById(R.id.loading);
new ProgressBarShow().execute();
//doing long stuff
//new ProgressBarHide().execute(); there isnt, but sense the same
}
}
BaseActivity
コードを重複させないために、プログレスバーを必要とする多くのアクティビティがあります。そのため、私は作成しました。
メインウィンドウをフリーズし、ユーザーに何もさせたくないので(ボタンをクリックするなど)、メインスレッドで長い作業(スタッフ機能)を行う必要があります。作業中のProgressBarを表示するだけです。
私の例では何が問題になっていますか?または、どうすればこれを改善できるかアドバイスをください