2015-01-26 19 views
8

Ich habe ein verwirrendes Problem. Ich habe eine MainActivity mit 2 Aktionen: Update und Logout. Das Problem tritt auf, wenn ich die Aktivität ausführe, die ListActivity die Aktionsleiste erweitert nicht angezeigt wird. Below Ich habe 2 Bilder mit 2 verschiedenen Arten in MainActivity erweiternActionBar funktioniert nicht beim Erweitern von ListActivity

Erweiterung ActionBarActivity Beispiel

public class MainActivity extends ActionBarActivity 

von erstrecktListActivity das Ergebnis das gleiche, wie im Bild unten. Grundsätzlich mag ich die Haupttätigkeit mit einem Listview und ein ein ction bar machen so dass der Benutzer auf Updates der Lage ist, und Abmeldedie Aktionsleiste mit. Aber es scheint, dass es nicht funktioniert und ich brauche Ihre Hilfe. Ich habe versucht, im Internet zu suchen, ich konnte nichts finden, das half.

public class MainActivity extends ListActivity 

Hier können Sie meine Manifest-Datei sehen:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.florin.statusapp" > 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-sdk android:minSdkVersion="11" 
     android:targetSdkVersion="21"/> 
    <application 

     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      > 

      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 

     </activity> 
     <activity 
      android:name=".RegisterActivity" 
      android:label="@string/title_activity_register" > 
     </activity> 
     <activity 
      android:name=".LoginActivity" 
      android:label="@string/title_activity_login" > 
     </activity> 
     <activity 
      android:name=".UpdateStatusActivity" 
      android:label="@string/title_activity_update_status" > 


     </activity> 
    </application> 

</manifest> 

Mein MainActivity.java

public class MainActivity extends ListActivity{ 

private List<ParseObject> mStatusObjects; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Enable Local Datastore. 
    Parse.initialize(this, "foo", "bar"); 


    ParseUser currentUser = ParseUser.getCurrentUser(); 
    if (currentUser != null) { 



    } else { 
     // show the login screen 
     Intent toLoginActivity = new Intent(MainActivity.this, LoginActivity.class); 
     startActivity(toLoginActivity); 

    } 


} 



@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    //getMenuInflater().inflate(R.menu.menu_main, menu); 
    //return true; 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu_main, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    switch (id) { 
     case R.id.updateStatus: 
      // take user to update activity 
      Intent toMainActivityIntent = new Intent(MainActivity.this, UpdateStatusActivity.class); 
      startActivity(toMainActivityIntent); 
      break; 

     case R.id.LogoutUser: 
      //Log out user 
      ParseUser.logOut(); 
      // take user to login activity 
      Intent toLoginActivityIntent = new Intent(MainActivity.this, LoginActivity.class); 
      startActivity(toLoginActivityIntent); 
      break; 
    } 

    return super.onOptionsItemSelected(item); 
} 

und die menu_main.xml für die Aktionsleiste:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context="com.example.florin.statusapp.MainActivity"> 
    <item android:id="@+id/updateStatus" 
     android:title="Update" 
     app:showAsAction="always" /> 

    <item 
     android:id="@+id/LogoutUser" 
     android:title="Logout" 
     app:showAsAction="never" 

     /> 

</menu> 
+0

Verwenden Sie 'ActionBarActivity' mit einem' ListView'. –

+1

Sieht aus wie Sie auf einem Vortrag Tutorial von Udemy von Ronny arbeiten :) – Heisenberg

+0

prüfen Sie: http://stackoverflow.com/questions/18532346/adding-actionbar-to-listactivity –

Antwort

15

Dies sollte mit Ihrem Thema zusammenhängen. Aktionsleisten werden nur für Themen nach Holo unterstützt.

http://developer.android.com/guide/topics/ui/actionbar.html#Adding

Ihre styles.xml hat wahrscheinlich so etwas wie:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 

Sie können es so weit ändern, um die Holo Thema zu verwenden:

<style name="AppTheme" parent="android:Theme.Holo"> 
+1

Danke für die Hilfe, ich schätze es wirklich. Ja, aber wie kann ich 'ListActivity' für meine Listenansicht erweitern, wenn ich auch' ActionBarActivity' erweitern muss? Ich muss ListActivity verwenden, aber ich möchte auch eine Aktionsleiste, und ich weiß nicht, was zu tun ist. –

+0

In Java wird die Mehrfachvererbung nicht unterstützt, so dass beides nicht möglich wäre. – AshesToAshes

+0

Das funktionierte für mich und ich kann meine Aktionsleiste wieder sehen, aber ich hatte meinen Menüpunkt auf der Aktionsleiste statt im Menü angezeigt. Jetzt ist es wieder im Menü. Irgendwelche Gedanken? – dawoodman71

6

Wie Tachyonflux sagte auf API 11 und höher, die Aktionsleiste ist in allen Aktivitäten enthalten, die Theme.Holo oder eine seiner Nachkommen verwenden

Folgendes AndroidManifest.xml

<activity 
    android:name=".MainActivity" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.Holo"> 

Oder ein anderes Thema oder Ihrer Wahl

Versuchen hinzufügen. Gehe zum Link Tachyonflux und schau dir die verfügbaren Optionen an. Es gibt verschiedene Standardoptionen, Sie können jedoch auch eigene erstellen.

+1

Es scheint, dass mein aktuelles Thema AppTheme nur funktioniert, indem ich 'ActionBarActivity' erweitere. Ich habe das Thema in "Theme.Holo" geändert, wie du sagtest, aber meine Buttons erscheinen immer noch nicht in der oberen rechten Ecke. Nur wenn ich die Menü-Taste drücke, kann ich die Tasten der Aktionsleiste sehen und es ist nicht das, was ich in diesem Fall will. –

Verwandte Themen