2010-12-13 6 views
0

J'ajoute une barre d'onglets dans la méthode doInBackground et je reçois une exception dans android. Quelqu'un peut-il me dire comment faire cela? Donne un exemple. Mon code est ci-dessous:Ajouter une barre d'onglets dans la méthode doInBackground obtenir une exception dans android

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

Il serait probablement utile si vous avez dit _what_ exception que vous obtenez et où l'exception se produit (et de préférence avec la trace de la pile de l'exception aussi). – Nailuj

Répondre

1

Jusqu'à présent, je suppose, ajout d'onglets doivent être effectués dans l'interface utilisateur Discussion/ Tu ne peux pas le faire dans les tâches de fond. Vous ajoutez tous vos onglets dans la méthode DoInBackground.

+0

puis comment afficher l'écran de démarrage jusqu'à ce que la barre d'onglets soit chargée – mohan

+0

Le chargement de tous les onglets ne prend pas beaucoup de temps. Vous pouvez directement afficher les onglets. Cependant, si vous avez besoin d'afficher l'écran de démarrage, vous pouvez utiliser ViewSwitcher. –

Questions connexes