2013-08-30 9 views
11

Hallo, also habe ich eine Liste erstellt und ich möchte eine Aktionsleiste hinzufügen. Ich bin ziemlich neu in Android, also würde ich gerne wissen, wie Sie eine Aktionsleiste hinzufügen, während Sie ListActivity verwenden. Jede Hilfe wird geschätzt. Dank Mein Code:Hinzufügen von Actionbar zu listactivity

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

} 

Antwort

5

Dann in Ihrer Tätigkeit des onCreateOptionsMenu() -Methode, aufblasen die Menüressource in das angegebene Menü jedes Element der Aktionsleiste hinzuzufügen:

@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

Dies funktioniert nicht für mich auf Android 4.4.2. Ich benutze eine ListActivity mit Stil 'android: Theme.Holo.Light.DarkActionBar'. – Daniel

7

Du kannst Holo Themes verwenden, brauchst du nur auf diesem Bildschirm?

In Android Manifest:

Für nur einen Bildschirm, atribute Thema setzen, wie folgt aus:

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

Für alle Bildschirm setzen atribute Thema in Anwendung Tag.

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

Auch Sie können ein benutzerdefiniertes Thema basierend auf Holo Light Theme machen.

Ex:

android:theme="@style/My_Theme" > 

In styles.xml

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

First- Stellen Sie sicher, dass Android Minimum API-14 or later.

Dann, fügen android:theme="@android:style/Theme.Holo.Light.DarkActionBar" unter Ihrem ListView_Activity in AndroidManifest.xml Klasse.

Beispiel

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

Hier ist eine gute Art und Weise:

In Ihrem Layout-Datei: 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> 

Jetzt für Ihre Aktivität:

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

Viel Glück!

+0

Ich glaube nicht myAdapter = new ListAdapter (getApplicationContext()); funktioniert, weil Sie die abstrakte ListAdapter-Klasse nicht instanziieren können. –

+0

Eigentlich ListAdapter ist eine benutzerdefinierte Klasse, die BaseAdapter implementiert. Hier ist die Signatur "öffentliche Klasse ListAdapter erweitert BaseAdapter" So können Sie ein Objekt aus der ListAdapter-Klasse erstellen und dieses Objekt hat die Funktionen von BaseAdapter + Ihre eigenen Methoden –

0

ListActivity wurde nicht zu AppCompat portiert. Wahrscheinlich, weil Sie es als 'deprecated' betrachten sollten und stattdessen ein ListFragment verwenden.

Fragmente arbeiten mit einem ActionBarActivity, so stellen Sie sicher, sie sind Fragmente aus der Support-Bibliothek.

Lesen Sie diesen Link über Fragmente.

Für Ihren Anwendungsfall würde ich nur das Fragment in XML definieren.

Verwandte Themen