开发者

Adding a tabbar in doInBackground method get exception in android

I am adding a tabbar in the doInBackground method and get an exception in android. Can anybody tell me how to do this? Give an example. My code is below:

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;
       }

 }   


}


So far I suppose, adding tabs should be done in UI Thread/ You cant do it in background tasks. You are adding all your tabs in DoInBackground method.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜