私の考えは、AsyncTask 内に新しいフラグメントを作成し、onPostExecute で、表示されている進行状況バーのフラグメントと交換することでした。私の問題は、フラグメントがスワップされないため、進行状況バーのフラグメントにとどまることです。これはできませんか?それは悪いアプローチですか?代わりに DetailFragment 内に進行状況バーを表示する必要がありますか? (プログレスバーを含む多くのフラグメントになります)
@Override
protected void onStart() {
super.onStart();
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, new ProgressBarFragment()).commit();
TestSwapFragment d = new TestSwapFragment();
d.execute(data);
}
class TestSwapFragment extends AsyncTask<FragmentData, Void, MyFragment> {
FragmentData data = null;
@Override
protected MyFragment doInBackground(FragmentData... params) {
try {
Thread.sleep(15000); // Simulate the long running method below
} catch (InterruptedException e) {
e.printStackTrace();
}
this.data = params[0];
DetailFragment df= new DetailFragment();
df.ExecuteFragment(this.data); // Long running
return df;
}
@Override
protected void onPostExecute(MyFragment result) {
super.onPostExecute(result);
if (this.data.Position == FragmentPosition.PaneOne)
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, result).commit();
else
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame2, result).commit();
}
}