2010-12-13 14 views
0

doInBackgroundメソッドでタブバーを追加し、アンドロイドで例外を取得します。 これを行う方法を教えてもらえますか?例を挙げる。私のコードは以下の通りです:これまでのところ私が思うdoInBackgroundメソッドでタブバーを追加すると、アンドロイドで例外が発生する

package com.inquest; 


import java.util.ArrayList; 

//import com.inquest.LoginActivity.FetchTask; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.ProgressDialog; 
import android.app.TabActivity; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.content.res.Resources; 
import android.graphics.Typeface; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
import android.util.Log; 
import android.view.Gravity; 
import android.widget.Button; 
import android.widget.RelativeLayout; 
import android.widget.TabHost; 
import android.widget.TabWidget; 
import android.widget.TextView; 
import android.widget.TabHost.TabSpec; 
//TabActivity 

public class HelloTabWidget extends TabActivity 
{ 
    int width =40; 
    int height =49; 
//private TabHost tabHost; 
TextView txthome; 
TextView txtstock; 
TextView txtcitn; 
TextView txtmyquest; 
Button btn; 
//private ProgressDialog pd = null; 
    private ProgressDialog dlg; 
    private Object data = null; 
    String strusername=""; 
    String strPassWord=""; 
    String questGroupId=""; 
    String userid=""; 
    String systemuserid=""; 
    String providerid=""; 
    private ProgressDialog dialog; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.tab); 


new TabTask(HelloTabWidget.this).execute(null); 

} 







public class TabTask extends AsyncTask<Void, Void,Void> 
{ 
    private ProgressDialog dlg; 
      private Context ctx; 
    public TabTask(Context context) { 
     ctx = context; 
    } 



    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     dlg = new ProgressDialog(HelloTabWidget.this); 
     dlg.setMessage("Loading...."); 
     dlg.show(); 
    } 



    @Override 
    protected Void doInBackground(Void... params) { 



    try 
     { 


     Resources res = getResources(); 
     TabHost.TabSpec spec; 
     TabHost tabHost=getTabHost(); 

     TabWidget tabWidget = tabHost.getTabWidget(); 
     //TabHost tabHost=(TabHost)this.findViewById(R.) 
     //TabHost tabHost = (TabHost)this.findViewById(R.id.) 


     // tabHost.setBackgroundResource(R.color.gray1); 
    //tabWidget.setBackgroundResource(R.color.gray1); 
     //tabWidget.setBackgroundDrawable(res.getDrawable(R.drawable.quest_tab_bar_icon)); 
     //tabWidget.setBackgroundColor(R.color.gray1); 
     //tabWidget.setBackgroundDrawable(getResources().getDrawable(R.drawable.tabbar)); 
     Typeface myTypeface = Typeface.createFromAsset(ctx.getAssets(),"verdanab.TTF"); 
     Typeface myTypeface1 = Typeface.createFromAsset(ctx.getAssets(),"verdana.TTF"); 
     Intent homeintent; 
     // Create an Intent to launch an Activity for the tab (to be reused) 
     homeintent = new Intent(); 
     Bundle bundle=getIntent().getExtras(); 
     String strusername=bundle.get("strUserName").toString(); 
     String strPassWord=bundle.get("strPassword").toString(); 
     String questGroupId=bundle.get("questGroupId").toString(); 
     String userid=bundle.get("userid").toString(); 
     String systemuserid=bundle.get("systemuserid").toString(); 
     String providerid=bundle.get("providerid").toString(); 
     Log.d("home activity username", strusername); 
     Log.d("home activity password", strPassWord); 
     Log.d("home activityquestGroupId",questGroupId); 
      homeintent.setClass(ctx, HomeActivityGroup.class); 
     homeintent.putExtra("strUserName", strusername); 
     homeintent.putExtra("strPassWord",strPassWord); 
     homeintent.putExtra("questGroupId",questGroupId); 
     homeintent.putExtra("userid",userid); 
     homeintent.putExtra("systemuserid", systemuserid); 
     homeintent.putExtra("checking", "one"); 

      spec = tabHost.newTabSpec("home").setIndicator("Home",res.getDrawable(R.drawable.home_tab_bar_icon)).setContent(homeintent); 
     tabHost.addTab(spec); 

     //homeintent = new Intent().setClass(this,ThemeSearchActivity.class); 
     homeintent = new Intent().setClass(ctx,StockActivity.class); 
     homeintent.putExtra("strUserName", strusername); 
     homeintent.putExtra("strPassWord",strPassWord); 
     homeintent.putExtra("questGroupId",questGroupId); 
     homeintent.putExtra("userid",userid); 
     homeintent.putExtra("systemuserid", systemuserid); 
     homeintent.putExtra("providerid", providerid); 
     spec = tabHost.newTabSpec("stock").setIndicator("Stock",res.getDrawable(R.drawable.stocks_tab_bar_icon)).setContent(homeintent); 
     tabHost.addTab(spec); 
     homeintent = new Intent().setClass(ctx,ArticleActivity.class); 
      spec = tabHost.newTabSpec("citn").setIndicator("CITN",res.getDrawable(R.drawable.citn_tabbar_icon)).setContent(homeintent); 
     tabHost.addTab(spec); 
     homeintent = new Intent().setClass(ctx, MyCompaniesActivity.class); 
     spec = tabHost.newTabSpec("myquest").setIndicator("My Quest",res.getDrawable(R.drawable.quest_tab_bar_icon)).setContent(homeintent); 
     tabHost.addTab(spec); 

     for (int i =0; i < tabWidget.getChildCount(); i++) { 
     //tabWidget.getChildAt(i).setBackgroundColor(R.color.black); 
      tabWidget.getChildAt(i).getLayoutParams().height = height; 
     tabWidget.getChildAt(i).getLayoutParams().width = width; 
     RelativeLayout relLayout = (RelativeLayout)tabWidget.getChildAt(i); 
     TextView tv = (TextView)relLayout.getChildAt(1); 
     tv.setTextSize(10.0f); 
     //tv.setCompoundDrawablesWithIntrinsicBounds(0, 1, 0, 0); 
    tv.setTypeface(myTypeface1);   



      } 
     } 
      catch (Exception e) { 
     // TODO: handle exception 
       e.printStackTrace(); 
     } 



     return null; 
      //return parservalue; 
     } 

} 


} 
+0

これは、あなたが何を得ているのか、どこで例外が発生したのか(そして、好ましくは例外のスタックトレースもある)を伝えれば助けになるでしょう。 – Nailuj

答えて

1

、追加のタブがあなたカントは、バックグラウンドタスクでそれを行うUIスレッド/ で行う必要があります。 DoInBackgroundメソッドですべてのタブを追加しています。

+0

タブバーがロードされるまでスプラッシュ画面を表示する方法 – mohan

+0

すべてのタブの読み込みに時間がかかりません。タブを直接表示することができます。それでもまだスプラッシュ画面を表示する必要がある場合は、ViewSwitcherを使用できます。 –

関連する問題