0

タブバーとその仕様を作成しようとしていますが、Asycnタスクで作成する必要があるため、TabActivityがありません。以下のこのコードを実行した後、メインレイアウトのみが表示されます。そして最後に、Imがやろうとしていることは、アプリケーションがインストールされた後、必要なファイルが初めてコピーされることを示すプログレスバーをユーザーに表示したいのですが、その間にファイルをコピーしてからtabHostを作成し、仕様を追加します。asyncTaskがなくても非常にうまく機能しますが、アプリケーションを初めて実行すると、コピープロセスが完了するまで画面が20秒または30秒間ロックされます。何か案が ?前もって感謝します。

public class AsyncTest extends AsyncTask<Void, Void, Void> {

Context context;
DataBaseJSONFunctions json;

TabHost tabHost;

TabWidget tabWidget;

Resources res;

TabHost.TabSpec sp;

Intent intent;

ProgressDialog dialog;

Activity ac;

public AsyncTest(Context context, TabHost tabHost, TabHost.TabSpec sp, Bundle savedInstanceState) {
    this.context = context;
    json = new DataBaseJSONFunctions(context);
    this.tabHost = tabHost;
    tabWidget = tabHost.getTabWidget();
    this.sp = sp;
    ac = (Activity) context;
    res = context.getResources();

    LocalActivityManager mlam = new LocalActivityManager(ac, false);
    mlam.dispatchCreate(savedInstanceState);
    tabHost.setup(mlam );

}

@Override
protected Void doInBackground(Void... params) {
    initializeAll();
    return null;
}

@Override
protected void onPostExecute(Void result) {

    dialog.dismiss();

    // to go through to the another activity in the tab I need to initialize an intent.
    // and I need to set the Tab bar and it's icon.
    intent = new Intent().setClass(ac, Activities.class);
    sp = tabHost.newTabSpec("activities").setIndicator("activities",res.getDrawable(R.drawable.tab_activities_selector)).setContent(intent);
    tabHost.addTab(sp);

    // doing the same things for Songs Activity.
    intent = new Intent().setClass(ac, Promotions.class);
    sp = tabHost.newTabSpec("promotions").setIndicator("promotions",res.getDrawable(R.drawable.tab_promotions_selector)).setContent(intent);
    tabHost.addTab(sp);


    // doing the same things for another Activity.
    intent = new Intent().setClass(ac,Menu.class);
    sp = tabHost.newTabSpec("menu").setIndicator("Menu",res.getDrawable(R.drawable.tab_menu_selector)).setContent(intent);
    tabHost.addTab(sp);


    intent = new Intent().setClass(ac, Gallery.class);
    sp = tabHost.newTabSpec("gallery").setIndicator("Gallery",res.getDrawable(R.drawable.tab_gallery_selector)).setContent(intent);
    tabHost.addTab(sp);


    intent = new Intent().setClass(ac, Info.class);
    sp = tabHost.newTabSpec("info").setIndicator("Info",res.getDrawable(R.drawable.tab_info_selector)).setContent(intent);
    tabHost.addTab(sp);

    for(int i = 0; i < tabWidget.getChildCount(); i++){
        tabWidget.getChildAt(i).setBackgroundResource(R.drawable.tab_bar);
    }

    tabHost.setCurrentTab(0);

    // Starting location listener service.
    ac.startService(new Intent(ac, LocationService.class));

    ac.setContentView(R.layout.tabbar_main);
    super.onPostExecute(result);
}

@Override
protected void onPreExecute() {
    dialog = ProgressDialog.show(context, "", "Copying files please wait...");
    super.onPreExecute();
}
4

2 に答える 2

0

私はそれを行う方法を見つけました。GONEとして可視性を持つ画像ビューがあり、onPreExecute()でこの画像の可視性をVISIBLEとして設定しています。また、onPostExecute()以前と同じようにGONEにします。

于 2012-09-18T07:54:57.110 に答える
0

タブレイアウトの場合、xmlは次のようになります。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TabHost
        android:id="@android:id/tabhost"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical" >

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1" />

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="0" />
        </LinearLayout>
    </TabHost>


</RelativeLayout>
于 2012-05-04T11:33:00.533 に答える