2012-05-03 8 views
1

アプリケーションを初めて実行すると、画像と一部のデータをアプリケーションから内部メモリにコピーし始めるアプリケーションを作成しました。その後、これらのデータを別のアクティビティの別の場所で使用します。Androidで非同期タスクを使用するタブバー

コピー処理に30秒以上かかります。私は非同期タスクでこれをやりたかったのです。しかし、私はそれを動作させることができませんでした。非同期タスクは正常に動作しますが、私はタブ仕様を作成し、onPostExecuteメソッドの各仕様にインテントを割り当てる必要があります。しかし、私が見ているのは、仕様のないタブバーだけで、何も動作しません。

どのようにしてこのように構築するのですか?

ご協力いただければ幸いです。 ここに私の活動は、

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.tabbar_main); 

    myJSON = new DataBaseJSONFunctions(this); 

    TabHost tabHost = getTabHost(); 

    TabWidget tabWidget = tabHost.getTabWidget(); 

    Resources res = getResources(); 
    //TabHost tabHost = getTabHost(); 

    TabHost.TabSpec spec; 
    Intent intent; 

    // Starting Initialization process. 
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 

    if(!prefs.getBoolean("firstRun", false)) { 

     initializeAll(); 
     // Set "firstRun" true to make it runs once application is installed. 
     prefs.edit().putBoolean("firstRun", true).commit(); 
    } 

であると私はIAMのは、非同期タスクに私の活動のコンテキストを渡し、ところで、非同期タスクに

intent = new Intent().setClass(this,Activities.class); 
    spec = tabHost.newTabSpec("activities").setIndicator("act",res.getDrawable(R.drawable.tab_activities_selector)).setContent(intent); 
    tabHost.addTab(spec); 

    // doing the same things. 
    intent = new Intent().setClass(this, Promotions.class); 
    spec = tabHost.newTabSpec("promotion").setIndicator("Promotion",res.getDrawable(R.drawable.tab_promotions_selector)).setContent(intent); 
    tabHost.addTab(spec); 


    // doing the same things for Albums Activity. 
    intent = new Intent().setClass(this,Menu.class); 
    spec = tabHost.newTabSpec("menu").setIndicator("Menü",res.getDrawable(R.drawable.tab_menu_selector)).setContent(intent); 
    tabHost.addTab(spec); 

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

    tabHost.setCurrentTab(0); 

をこのブロックを置きたいです。

答えて

0

TabHostを入力しようとすると、AsyncTaskがちょっと変わってきます。アプリケーションが起動すると、すぐにTabHostにタブを設定してから、AsyncTaskを実行すると、ProgressDialogが表示され、表示されない可能性があります。AsyncTaskが完了したら、新しいデータを持つUI。

+1

できるだけ早く試してみますが、アプリケーションが起動するとすぐにタブバーにデータを入力すればどうしますか?つまり、AsyncTaskから返されたデータをUIに入力する必要があります。データなしでインテントを開始すると、私はnullポインタを取得します。 – osayilgan

+0

これは、前回の実行時に保存されたデータ、または手動で作成されたプレースホルダデータを初めて使用する場合に使用できます。ポイントは、あなたのUIは何かを表示する必要がありますし、背景の更新を開始し、おそらく 'ProgressBar'を表示して何かが起こっていることをユーザーに伝えます。 – lenik

関連する問題