2015-01-26 8 views
8

Ho un problema di confusione. Ho un MainActivity con 2 azioni: Update e Logout. Il problema è quando eseguo l'attività che estende ListActivity la barra delle azioni non appare. Sotto Ho 2 immagini con 2 diversi tipi estendono in MainActivityActionBar non funziona quando si estende ListActivity

allungabile ActionBarActivity esempio

public class MainActivity extends ActionBarActivity 

Con estendeListActivity il risultato è lo stesso come nella figura sottostante. Fondamentalmente voglio rendere il attività principale con un ListView e un bar ction modo che l'utente può aggiornamento e disconnessioneutilizzando la barra azione. Ma sembra che non funzioni e ho bisogno del tuo aiuto . Ho provato a cercare sul Web non ho trovato nulla che mi abbia aiutato.

public class MainActivity extends ListActivity 

Qui potete vedere il mio file manifesto:

<?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> 

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

e la menu_main.xml per la barra delle operazioni:

<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

Utilizzare 'ActionBarActivity' con un' ListView'. –

+1

Sembra che si sta lavorando su un tutorial lezione da Udemy da Ronny :) – Heisenberg

+0

Controllare questo: http://stackoverflow.com/questions/18532346/adding-actionbar-to-listactivity –

risposta

15

Questo dovrebbe essere correlato al tema. Le barre delle azioni sono supportate solo su temi dopo holo.

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

tuo styles.xml ha probabilmente qualcosa come:

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

si può cambiare per questo utilizzare il tema Holo:

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

Grazie per l'aiuto, lo apprezzo davvero. Sì, ma la cosa è come posso estendere 'ListActivity' per il mio listview quando devo anche estendere' ActionBarActivity'. Devo usare ListActivity ma voglio anche una barra delle azioni e non so cosa fare. –

+0

In java l'ereditarietà multipla non è supportata, quindi l'estensione di entrambi non sarebbe possibile. – AshesToAshes

+0

Questo ha funzionato per me e posso vedere di nuovo la mia barra delle azioni, ma ho avuto la mia voce di menu visualizzata sulla barra delle azioni invece che nel menu. Ora è di nuovo nel menu. qualche idea? – dawoodman71

6

Come ha detto Tachyonflux, su API 11 e oltre, la barra delle azioni è inclusa in tutte le attività che utilizzano Theme.Holo o uno dei suoi discendenti

Prova ad aggiungere il seguente al vostro AndroidManifest.xml

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

O un altro tema o la vostra scelta. Vai al link Tachyonflux ha e guarda le opzioni disponibili. Esistono varie opzioni predefinite, ma puoi anche crearne di tue.

+1

Sembra che il mio tema attuale AppTheme funzioni solo estendendo 'ActionBarActivity'. Ho cambiato il tema in 'Theme.Holo' come hai detto, ma i miei pulsanti non appaiono ancora nell'angolo in alto a destra. Solo se premo il pulsante del menu posso vedere i pulsanti della barra delle azioni e non è quello che voglio in questo caso. –