2014-03-03 5 views
1

데이터베이스에서 추출한 데이터에서 탭 호스트에 탭을 동적으로 추가하려고합니다. 하지만 대개 예외가 있습니다. 나는 활동에서이 tabhost를 사용하고 싶다. 데이터베이스의 탭 호스트에서 동적으로 탭 추가

내 코드입니다 :

Main.cs

[Activity (Label = "Main",Theme = "@style/Theme.Splash")] 
public class Main : Activity 
{ 
     TabHost tabHost; 

    protected override void OnCreate (Bundle bundle) 
    { 
     base.OnCreate (bundle); 

     SetContentView (Resource.Layout.activity_main); 
     tabHost = FindViewById<TabHost>(Resource.Id.tabHost1); 

     LocalActivityManager localActMgr = new LocalActivityManager(this, false); 
     localActMgr.DispatchCreate(bundle); 

     CSList<CategoriesArticlesConfig> categories = CategoriesArticlesConfig.List(); 

     tabHost.Setup(localActMgr); 

     foreach (CategoriesArticlesConfig categorie in categories) 
     { 
      Intent i = new Intent(); 
      i.SetFlags(ActivityFlags.NewTask); 
      i.PutExtra("CategorieID", categorie.CategorieArticlesConfigID); 
      i.SetClass(this, typeof(AfficheArticlesTab)); 
      TabHost.TabSpec tab = tabHost.NewTabSpec("tab_"+categorie.CategorieArticlesConfigID); 
      tab.SetIndicator(""+categorie.Nom, Resources.GetDrawable(Android.Resource.Drawable.IcInputAdd)); 
      tab.SetContent(i); 
      tabHost.AddTab(tab); 
     }    
    } 
} 

AfficheArticlesTab.cs

class AfficheArticlesTab : Activity 
{ 
    public AfficheArticlesTab() { } 

    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 
     SetContentView(Resource.Layout.activity_configuration); 

     GridView gridView = FindViewById<GridView>(Resource.Id.gv_item_articles_gridview_articles_tab_main_activity); 
     LayoutInflater layoutInflater = (LayoutInflater)GetSystemService(Context.LayoutInflaterService); 
     View view = layoutInflater.Inflate(Resource.Layout.gridview_articles_tab, null); 

     int CategorieID = Intent.Extras.GetInt("CategorieID"); 

     CategoriesArticlesConfig categorie = CategoriesArticlesConfig.ReadFirst("CategorieArticlesID="+CategorieID); 
     gridView.Adapter = new ListArticleConfigAdapter(this,categorie.ArticlesConfig.ToList<ArticlesConfig>()); 
    } 
} 

activity_main.axml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:minWidth="25px" 
android:minHeight="25px" 
android:background="@drawable/background_simple" 
android:padding="5dp"> 
<FrameLayout 
    android:minWidth="25px" 
    android:minHeight="25px" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/frameLayout1" 
    android:layout_margin="5dp" 
    android:layout_weight="0.5"> 
    <LinearLayout 
     android:orientation="vertical" 
     android:minWidth="25px" 
     android:minHeight="25px" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/linearLayout11"> 
     <LinearLayout 
      android:orientation="horizontal" 
      android:minWidth="25px" 
      android:minHeight="25px" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/linearLayout12" 
      android:layout_weight="4"> 
      <LinearLayout 
       android:orientation="vertical" 
       android:minWidth="25px" 
       android:minHeight="25px" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:id="@+id/linearLayout13" 
       android:layout_marginTop="14.0dp" 
       android:layout_marginLeft="8.0dp"> 
       <LinearLayout 
        android:orientation="horizontal" 
        android:minWidth="25px" 
        android:minHeight="25px" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:id="@+id/linearLayout18"> 
        <TextView 
         android:textAppearance="?android:attr/textAppearanceMedium" 
         android:layout_width="wrap_content" 
         android:layout_height="fill_parent" 
         android:id="@+id/tv_num_ticket_activity_main" /> 
        <TextView 
         android:textAppearance="?android:attr/textAppearanceMedium" 
         android:layout_width="wrap_content" 
         android:layout_height="fill_parent" 
         android:id="@+id/tv_num_caissier_activity_main" 
         android:layout_marginLeft="10dp" /> 
       </LinearLayout> 
       <LinearLayout 
        android:orientation="horizontal" 
        android:minWidth="25px" 
        android:minHeight="25px" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:id="@+id/linearLayout14"> 
        <LinearLayout 
         android:orientation="horizontal" 
         android:minWidth="25px" 
         android:minHeight="25px" 
         android:layout_width="fill_parent" 
         android:layout_height="fill_parent" 
         android:id="@+id/linearLayout15" 
         android:layout_weight="0.1"> 
         <EditText 
          android:inputType="numberDecimal" 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:id="@+id/ed_zone_main_activity" 
          android:layout_weight="0.16" 
          android:layout_marginTop="0.0dp" /> 
         <TextView 
          android:text="@string/qte_value" 
          android:textAppearance="?android:attr/textAppearanceMedium" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:id="@+id/tv_qte_value_main_activity" 
          android:layout_weight="0.3" 
          android:layout_marginRight="2.5dp" 
          android:layout_marginLeft="13.3dp" 
          android:layout_gravity="center_vertical" 
          android:gravity="right" 
          android:layout_marginTop="0.0dp" 
          android:textSize="20sp" /> 
        </LinearLayout> 
       </LinearLayout> 
      </LinearLayout> 
     </LinearLayout> 
     <ListView 
      android:minWidth="25px" 
      android:minHeight="25px" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/listView1" 
      android:layout_weight="1" 
      android:layout_marginTop="8.0dp" /> 
    </LinearLayout> 
</FrameLayout> 
<LinearLayout 
    android:orientation="vertical" 
    android:minWidth="25px" 
    android:minHeight="25px" 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/linearLayout17" 
    android:layout_weight="0.3"> 
    <FrameLayout 
     android:minWidth="25px" 
     android:minHeight="25px" 
     android:id="@+id/frameLayout2" 
     android:layout_width="fill_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="0.15"> 
     <LinearLayout 
      android:orientation="vertical" 
      android:minWidth="25px" 
      android:minHeight="25px" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/linearLayout5"> 
      <TabHost 
       android:minWidth="25px" 
       android:minHeight="25px" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:id="@+id/tabHost1"> 
       <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:orientation="vertical" 
        android:id="@+id/linearLayout19"> 
        <TabWidget 
         android:id="@android:id/tabs" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" /> 
        <FrameLayout 
         android:id="@android:id/tabcontent" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" /> 
       </LinearLayout> 
      </TabHost> 
     </LinearLayout> 
    </FrameLayout> 
    <LinearLayout 
     android:orientation="horizontal" 
     android:minWidth="25px" 
     android:minHeight="25px" 
     android:id="@+id/linearLayout16" 
     android:layout_width="fill_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="0.85"> 
     <Button 
      android:text="@string/total" 
      android:id="@+id/bt_total_activity_main" 
      android:textSize="16sp" 
      android:layout_width="match_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:background="@drawable/button_selector_rouge" /> 
     <Button 
      android:text="@string/quantitee" 
      android:id="@+id/bt_quantitee_activity_main" 
      android:textSize="16sp" 
      android:layout_width="match_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:background="@drawable/button_selector_enter" /> 
     <Button 
      android:text="@string/code_barre" 
      android:layout_width="match_parent" 
      android:layout_height="fill_parent" 
      android:id="@+id/bt_code_barre_activity_main" 
      android:layout_weight="1" 
      android:textSize="16sp" 
      android:background="@drawable/button_selector_enter" /> 
     <Button 
      android:text="@string/annuler" 
      android:layout_width="match_parent" 
      android:layout_height="fill_parent" 
      android:id="@+id/bt_annuler_activity_main" 
      android:layout_weight="1" 
      android:textSize="16sp" 
      android:background="@drawable/button_selector_enter" /> 
     <Button 
      android:text="@string/remise" 
      android:layout_width="match_parent" 
      android:layout_height="fill_parent" 
      android:id="@+id/bt_remise_activity_main" 
      android:layout_weight="1" 
      android:textSize="16sp" 
      android:background="@drawable/button_selector_enter" /> 
     <Button 
      android:text="@string/attente" 
      android:layout_width="match_parent" 
      android:layout_height="fill_parent" 
      android:id="@+id/bt_attente_activity_main" 
      android:layout_weight="1" 
      android:textSize="16sp" 
      android:background="@drawable/button_selector_enter" /> 
    </LinearLayout> 
</LinearLayout> 

,691,363 (210)
03-03 13:19:08.004 E/mono (7331): Unhandled Exception: 
03-03 13:19:08.004 E/mono (7331): Java.Lang.NullPointerException: Exception of type 'Java.Lang.NullPointerException' was thrown. 
03-03 13:19:08.004 E/mono (7331): at Android.Runtime.JNIEnv.CallVoidMethod (intptr,intptr,Android.Runtime.JValue[]) [0x00023] in /Users/builder/data/lanes/monodroid-lion-monodroid-4.6.6-branch/6d7480e9/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:368 
03-03 13:19:08.004 E/mono (7331): at Android.Widget.TabHost.AddTab (Android.Widget.TabHost/TabSpec) [0x0003e] in /Users/builder/data/lanes/monodroid-lion-monodroid-4.6.6-branch/6d7480e9/source/monodroid/src/Mono.Android/platforms/android-14/src/generated/Android.Widget.TabHost.cs:762 
03-03 13:19:08.004 E/mono (7331): at SymaMobile.Droid.Main.OnCreate (Android.OS.Bundle) [0x000e8] in f:\PFE\VS2012\SymaMobile\SymaMobile\SymaMobile.Droid\Activities\Main.cs:41 
03-03 13:19:08.004 E/mono (7331): at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (intptr,intptr,intptr) [0x00010] in /Users/builder/data/lanes/monodroid-lion-monodroid-4.6.6-branch/6d7480e9/source/monodroid/src/Mono.Android/platforms/android-14/src/generated/Android.App.Activity.cs:1859 
03-03 13:19:08.004 E/mono (7331): at (wrapper dynamic-m 
+0

저를 도와주세요를 ???? – Soufiene

+0

'Main.cs'의 41 번째 라인은 무엇입니까? – Cheesebaron

답변

0

나는, 그것은 첫째

을 :) 찾을 당신은 TabHost.ITabContentFactory이

public class Main : Activity, TabHost.ITabContentFactory 

둘째, 당신이 내 tabhost에 NewTabSpec을 추가해야합니다 확장한다.

tabHost.AddTab(tabHost.NewTabSpec("tab_" + categorie.CategorieArticlesConfigID).SetIndicator(createTabView(tabHost.Context, categorie.Nom)).SetContent(this)); 

그리고 마지막으로, 당신은이 같은 구현 방법 CreateTabContent 사용

public View CreateTabContent(string tag) 
    { 
     LayoutInflater layoutInflater = (LayoutInflater)GetSystemService(Context.LayoutInflaterService); 

     View view1 = layoutInflater.Inflate(Resource.Layout.gridview_articles_tab, null); 
     View view2 = layoutInflater.Inflate(Resource.Layout.list_item_article_configuration, null); 
     View view3 = layoutInflater.Inflate(Resource.Layout.tab_item, null); 

     GridView gridView = view1.FindViewById<GridView>(Resource.Id.gv_item_articles_gridview_articles_tab_main_activity); 

     CategoriesArticlesConfig categorie = CategoriesArticlesConfig.ReadFirst("CategorieArticlesConfigID=" + tabCatID[tabHost.CurrentTab]); 

     gridView.Adapter = new ListArticleTabAdapter(this, categorie.ArticlesConfig.ToList()); 
     gridView.ItemClick += gridView_ItemClick; 

     return view1; 
    } 

감사합니다,

관련 문제