2016-03-20 4 views
0

Nun, ich versuche eine App zu machen, die eine Art ActionBar haben muss, die nur einmal zu planen und zu entwerfen, und dann dienen mir für alle meine APP-Aktivität. Ich bin mir nicht sicher, wie das funktioniert, brauche bitte ein wenig Anleitung.Zweifel Aktion Leiste, Symbolleiste, etc.

Ihnen eine Vorstellung davon geben, was ich will, würde ich so etwas wie dies mag:

example app

A oben, dass der General der APP ist. Und dann unten sowie ein Untermenü mit Icons, mit verschiedenen Optionen.

Was genau müsste es verwenden? Ich habe mit ActionBar herumgebastelt, aber dass ich es für die Spitze bin. Aber für die andere wie du?

Beide wollen, dass sie statisch sind und immer in jeder Tätigkeit meiner APP sind, ohne den Code jedes una kopieren und einfügen zu müssen. Frage ich denke, und irgendwie bist du bereit, es überall einzubetten, nur einmal zu programmieren .

Antwort

1

Diese Frage hat nicht wirklich viel mit Android zu tun. Hier geht es darum, wie Sie Code-Orte mehrfach verwenden können.

Sie könnten Vererbung für diesen Zweck verwenden.

Angenommen, Sie haben 3 verschiedene Aktivitäten, aber Sie möchten, dass sie eine Reihe gemeinsamer Funktionen haben - in Ihrem Fall die ActionBar.

In diesem Fall könnten Sie eine abstract class erstellen, die die ActionBar implementiert und alle Ihre Aktivitäten erben von dieser abstract class.

Die Hierarchie wie folgt aussehen könnte:

public class MyActivityA extends BaseActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.oncreate(savedInstanceState); // It's important to call through to super to have it setup the ActionBar for the current activity. 
     // Next call setContentView(R.layout.my_activity_layout); 
     // And what else you need to do. 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_a_menu, menu); 
     return true; 
    } 
} 
:

public abstract class BaseActivity extends AppCompatActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.oncreate(savedInstanceState); 

     // Setup your common ActionBar here. 
    } 
} 

nun für diese abstract class seine Arbeit zu tun, werden Sie alle Ihre Aktivitäten von dieser erben, wie so machen müssen

Und für die nächste Activity tun Sie das gleiche:

public class MyActivityB extends BaseActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.oncreate(savedInstanceState); 
     // Next call setContentView(R.layout.my_activity_layout); 
     // And what else you need to do. 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_b_menu, menu); 
     return true; 
    } 
} 

die onCreateOptionsMenu ist in all Ihren Aktivitäten implementiert, um verschiedene Menüpunkte zu erstellen und das gleiche sollte für Ihre onOptionsItemSelected gehen.

Nun ist dies ein sehr einfaches Beispiel dafür, wie Grundfunktionen für mehrere Klassen teilen und es soll etwas, das man hätte sein müssen gut informiert über vor Sie anfangen zu arbeiten mit Android, wie der obige Code sein üblich ist Java.

Denken Sie auch daran, dass es eine sehr breite Frage ist, die Sie stellen.

Eigentlich wollte ich das nur in einen Kommentar schreiben, aber ich entschied, dass es zu groß werden würde, um in die Kommentare zu passen.