2013-08-30 25 views
11

Witaj, więc utworzyłem listę i chcę dodać pasek akcji. Jestem całkiem nowy dla Androida, więc chciałbym wiedzieć, jak dodać pasek akcji podczas korzystania z ListActivity. Każda pomoc zostanie doceniona. Dzięki Mój kod:Dodawanie paska czynności do listy aktywności

 public class MainActivity extends ListActivity { 

    ArrayList<Item> items = new ArrayList<Item>(); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 


     items.add(new SectionItem("2x2 Matrices")); 
     items.add(new EntryItem("Adding 2 Matrices")); 
     items.add(new EntryItem("Subtracting 2 Matrices")); 
     items.add(new EntryItem("Multiplying 2 Matrices")); 
     items.add(new EntryItem("Multiplying by a constant")); 
     items.add(new EntryItem("Dividing 2 Matrices")); 
     items.add(new EntryItem("Negative of a Matrix")); 
     items.add(new EntryItem("Inverse of a Matrix")); 
     items.add(new EntryItem("Determinant of a Matrix")); 

     /*Section2*/ 
     items.add(new SectionItem("3x3 Matrices")); 
     items.add(new EntryItem("Item 4")); 
     items.add(new EntryItem("Item 5")); 
     items.add(new EntryItem("Item 6")); 
     items.add(new EntryItem("Item 7")); 
     /*Section3*/ 
     items.add(new SectionItem("Category 3")); 
     items.add(new EntryItem("Item 8")); 
     items.add(new EntryItem("Item 9")); 
     items.add(new EntryItem("Item 10")); 
     items.add(new EntryItem("Item 11")); 
     items.add(new EntryItem("Item 12")); 

     EntryAdapter adapter = new EntryAdapter(this, items); 

     setListAdapter(adapter); 
    } 

} 

Odpowiedz

5

Następnie w Twojej aktywności za onCreateOptionsMenu() metoda, nadmuchać zasób menu do danego menu, aby dodać każdy element na pasku akcji:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu items for use in the action bar 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.main_activity_actions, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

More info for action bar

+3

To nie działa dla mnie na Androida 4.4.2. Używam ListActivity w stylu 'android: Theme.Holo.Light.DarkActionBar'. – Daniel

7

Możesz używać Holo Themes, potrzebujesz tylko na tym ekranie?

W Android manifeście:

tylko dla jednego ekranu, umieścić atribute temat, jak to:

<activity 
android:theme="@android:style/Theme.Holo.Light.DarkActionBar"> 
</activity> 

Dla wszystkich ekranie umieścić atribute motyw w tagu aplikacji.

<application 
android:theme="@style/My_Theme" > 

Można również utworzyć niestandardowy motyw oparty na motywie Holo Light Theme.

Ex:

android:theme="@style/My_Theme" > 

W styles.xml

<style name="My_Theme" parent="@android:style/Theme.Holo.Light.NoActionBar"></style> 
12

studiów pierwszego Upewnij się, że Android minimum API-14 or later.

Następnie, dodać android:theme="@android:style/Theme.Holo.Light.DarkActionBar" pod klasie ListView_Activity w AndroidManifest.xml.

Przykład

 <activity android:name=".Your_ListView_Activity" 
        android:theme="@android:style/Theme.Holo.Light.DarkActionBar" 
        android:label="ListView_Activity_Label"> 
5

Oto dobry sposób:

W pliku układ: activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<ListView 
    android:id="@+id/list" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent"> 
</ListView> 

teraz na swojej działalności:

public class MainActivity extends ActionBarActivity 
{ 
    private ListView listView; 
    private ListAdapter myAdapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     listView = (ListView) findViewById(R.id.list); 
     myAdapter = new ListAdapter(getApplicationContext()); 
     listView.setAdapter(myAdapter); 

Powodzenia!

+0

Nie sądzę, myAdapter = new ListAdapter (getApplicationContext()); działa, ponieważ nie można utworzyć instancji abstrakcyjnej klasy ListAdapter. –

+0

Właściwie ListAdapter jest dostosowaną klasą, która implementuje BaseAdapter. Oto podpis "public class ListAdapter rozszerza BaseAdapter" Możesz więc utworzyć obiekt z klasy ListAdapter i ten obiekt ma funkcjonalność BaseAdapter + Twoje metody niestandardowe –

0

ListActivity nie został przeniesiony do AppCompat. Prawdopodobnie dlatego, że powinieneś rozważyć "deprecated" i zamiast tego użyj ListFragment.

Fragmenty będzie pracować z ActionBarActivity, wystarczy upewnić się, że są fragmenty z biblioteki wsparcia.

Przeczytanie tego linku o fragmentach.

Dla twojego przypadku użycia, chciałbym po prostu zdefiniować fragment w xml.