5

Witam, dodałem dwa TabHost s w Activity i działa grzywna. Dodałem kolejny plik XML z ListView i wywołałem w Activity, gdzie używam Tabhost. Podaje błąd zgodnie z oczekiwaniami, ale wiele próbowałem, ale nie mogłem go rozwiązać. Czy ktoś może mi dać jakiś pomysł na temat zarządzania ListView i TabHost zarówno w jednym Activity? Nie wstawiłem kodu, ponieważ jest to głównie z samouczków. Każda pomoc będzie doceniona. Dzięki. poważny błąd jest „treść musi mieć TabHost którego atrybut id jest«android.R.id.tabhost»”Widok listy po stronie rufowej i tabhost po prawej stronie z proporcją ekranu 20:80

+1

tak, sama błędu tłumacząc, że musi mieć tabhost id "tabhost". Jeśli podałeś identyfikator diff w pliku układu, ulegnie on awarii. – akkilis

+0

Tak, że zrozumiałem, i umieścić identyfikator w ten sposób, mam nadzieję, że poprawiam Androida: id = "@ android: id/tabhost" –

Odpowiedz

0

Próbka aktywny z kartami i ListViews z zaznaczonych elementów:

Zamieściłem poniżej przykładowa aktywność zawierająca jeden TabHost, który ma 3 Tabs i dwa ListView, po jednym na każdy tab1 i tab3. Używam ArrayList, aby zainicjować mój ArrayAdapter, z którego mogę połączyć mój ListView. Następnie dodaje elementy do tab3ListView po skonfigurowaniu poprzez jego ArrayList, tab3List. Zwróć uwagę, że elementy tab3ListView mają odpowiednie pole wyboru. Zauważ, że w dzisiejszych czasach niektórzy ludzie wolą ActionBar.Tabs niż TabHost, ale uważam, że jest to prostsze.

XML FILE:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<TabHost 
    android:id="@+id/tabhost" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" 
     android:padding="5dp" > 

     <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="fill_parent" 
      android:layout_height="70dp" 
      android:layout_marginBottom="-4dp" 
      android:layout_weight="0" > 
     </TabWidget> 
     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:padding="0dp" 
      android:layout_weight="1"> 
      <LinearLayout 
       android:id="@+id/tab1" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical"> 
      <ListView 
       android:id="@+id/tab1List" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:fastScrollEnabled="true"></ListView> 
      </LinearLayout> 

      <LinearLayout 
       android:id="@+id/tab2" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:orientation="vertical" > 
      <EditText 
       android:id="@+id/tab2Edit1" 
       android:layout_width="fill_parent" 
       android:layout_height="40dp" 
       android:hint="Enter text here"/> 
      </LinearLayout> 

      <LinearLayout 
       android:id="@+id/tab3" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="horizontal" > 
      <ListView 
       android:id="@+id/tab3List" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:fastScrollEnabled="true"></ListView> 
      </LinearLayout> 
     </FrameLayout> 
    </LinearLayout> 
</TabHost> 
</LinearLayout> 

Główna działalność:

public class MainActivity extends Activity{ 

// TabHost 
TabHost th; 
LinearLayout tab1, tab2, tab3; 

// ListView 
ListView tab1ListView, tab3ListView; 

// String list 
String stringList[] = {"Paris", "Washington", "Amsterdam", "London", "Bale", "Madrid", 
     "Zurich", "Munich", "Berlin", "Milan", "Rome", "Turin", "Lyon", "Marseille"}; 

// Adapters 
ArrayList<String> tab1List, tab3List; 
ArrayAdapter<String> tab1Adapter, tab3Adapter; 

// Others 
EditText tab2Edit1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // Initialize Layout 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    // Initialize Tabs 
    th = (TabHost) findViewById(R.id.tabhost); 
    th.setup(); 
    // Tab1 
    TabSpec spec1 = th.newTabSpec("tag1"); 
    spec1.setContent(R.id.tab1); 
    spec1.setIndicator("Tab 1"); 
    th.addTab(spec1); 
    // Tab2 
    TabSpec spec2 = th.newTabSpec("tag2"); 
    spec2.setContent(R.id.tab2); 
    spec2.setIndicator("Tab 2"); 
    th.addTab(spec2); 
    // Tab3 
    TabSpec spec3 = th.newTabSpec("tag3"); 
    spec3.setContent(R.id.tab3); 
    spec3.setIndicator("Tab 3"); 
    th.addTab(spec3); 

    //Initialize Adapter and ListView from Tab1 
    tab1ListView = (ListView) findViewById(R.id.tab1List); 
    tab2Edit1 = (EditText) findViewById(R.id.tab2Edit1); 
    tab1List = new ArrayList<String>(Arrays.asList(stringList)); 
    tab1Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, tab1List); 
    tab1ListView.setAdapter(tab1Adapter); 

    //Initialize Adapter and ListView from Tab3 
    tab3ListView = (ListView) findViewById(R.id.tab3List); 
    tab3List = new ArrayList<String>(Arrays.asList(stringList)); 
    tab3Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, tab3List); 
    tab3ListView.setAdapter(tab3Adapter); 
    tab3ListView.setFocusable(false); 
    tab3ListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 

    // Modify ListView: modify ArrayList and call notifyDataSetChanged() from corresponding adapter 
    tab3List.add(0,"New item at location 0"); 
    tab3List.add(3,"New item at location 3"); 
    tab3List.add("New item at location end"); 
    tab3Adapter.notifyDataSetChanged(); 

    tab3ListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
       long arg3) { 
      // Set what happenss when you check or uncheck an item here 
     } 

    }); 
}