Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Bei Verwendung TabActivityhat der Code zum Erstellen der Registerkartensymbole keine Auswirkung, wenn er mit dem Android 4.0-Framework ausgeführt wird. Obwohl es funktionell funktioniert wie in Versionen von Android vor 2.3, wurde die TabActivity Klasse selbst in 4.0 veraltet. Es wurde eine neue Möglichkeit zum Erstellen einer Registerkartenschnittstelle eingeführt, die die Aktionsleiste verwendet, die als nächstes erläutert wird.
Registerkarten der Aktionsleiste
Die Aktionsleiste enthält Unterstützung für das Hinzufügen von Registerkartenschnittstellen in Android 4.0. Der folgende Screenshot zeigt ein Beispiel für eine solche Schnittstelle.
Um Registerkarten in der Aktionsleiste zu erstellen, müssen wir zuerst die NavigationMode Zugehörige Eigenschaft so festlegen, dass Registerkarten unterstützt werden. In Android 4 ist eine ActionBar Eigenschaft in der Activity-Klasse verfügbar, die wir verwenden können, um folgendes NavigationMode festzulegen:
this.ActionBar.NavigationMode = ActionBarNavigationMode.Tabs;
Sobald dies erfolgt ist, können wir eine Registerkarte erstellen, indem wir die NewTab Methode auf der Aktionsleiste aufrufen. Mit dieser Registerkarteninstanz können wir die SetText Und SetIcon Methoden aufrufen, um den Beschriftungstext und das Symbol der Registerkarte festzulegen. Diese Aufrufe werden in der folgenden Reihenfolge im folgenden Code ausgeführt:
var tab = this.ActionBar.NewTab ();
tab.SetText (tabText);
tab.SetIcon (Resource.Drawable.ic_tab_white);
Bevor wir die Registerkarte jedoch hinzufügen können, müssen wir das TabSelected Ereignis behandeln. In diesem Handler können wir den Inhalt für die Registerkarte erstellen. Aktionsleistenregister sind so konzipiert, dass sie mit Fragmenten arbeiten, bei denen es sich um Klassen handelt, die einen Teil der Benutzeroberfläche in einer Aktivität darstellen. In diesem Beispiel enthält die Fragmentansicht eine einzelne TextView, die wir in unserer Fragment Unterklasse wie folgt aufblasen:
class SampleTabFragment: Fragment
{
public override View OnCreateView (LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState)
{
base.OnCreateView (inflater, container, savedInstanceState);
var view = inflater.Inflate (
Resource.Layout.Tab, container, false);
var sampleTextView =
view.FindViewById<TextView> (Resource.Id.sampleTextView);
sampleTextView.Text = "sample fragment text";
return view;
}
}
Das ereignisargument, das TabSelected im Ereignis übergeben wird, ist vom Typ TabEventArgs, der eine FragmentTransaction Eigenschaft enthält, die wir verwenden können, um das Fragment wie unten dargestellt hinzuzufügen:
tab.TabSelected += delegate(object sender, ActionBar.TabEventArgs e) {
e.FragmentTransaction.Add (Resource.Id.fragmentContainer,
new SampleTabFragment ());
};
Schließlich können wir der Aktionsleiste die Registerkarte hinzufügen, indem wir die AddTab Methode aufrufen, wie in diesem Code gezeigt:
this.ActionBar.AddTab (tab);
Das vollständige Beispiel finden Sie im Beispielcode für dieses Dokument im HelloTabsICS-Projekt .
ShareActionProvider
Die ShareActionProvider Klasse ermöglicht eine Freigabeaktion, die über eine Aktionsleiste ausgeführt werden kann. Es kümmert sich um das Erstellen einer Aktionsansicht mit einer Liste von Apps, die eine Freigabeabsicht behandeln können, und behält einen Verlauf der zuvor verwendeten Anwendungen für den einfachen Zugriff auf sie später über die Aktionsleiste. Auf diese Weise können Anwendungen Daten über eine Benutzeroberfläche freigeben, die in Android konsistent ist.
Beispiel für die Bildfreigabe
Unten sehen Sie z. B. einen Screenshot einer Aktionsleiste mit einem Menüelement, um ein Bild zu teilen. Wenn der Benutzer auf das Menüelement auf der Aktionsleiste tippt, lädt der ShareActionProvider die Anwendung, um eine Absicht zu behandeln, die der ShareActionProviderAktionsleiste zugeordnet ist. In diesem Beispiel wurde die Messaginganwendung bereits verwendet, sodass sie auf der Aktionsleiste angezeigt wird.
Wenn der Benutzer auf das Element in der Aktionsleiste klickt, wird die Messaging-App, die das freigegebene Bild enthält, gestartet, wie unten dargestellt:
Angeben der Aktionsanbieterklasse
Um das ShareActionProviderandroid:actionProviderClass Attribut für ein Menüelement im XML-Code für das Menü der Aktionsleiste wie folgt zu verwenden:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/shareMenuItem"
android:showAsAction="always"
android:title="@string/sharePicture"
android:actionProviderClass="android.widget.ShareActionProvider" />
</menu>
Aufblasen des Menüs
Um das Menü zu überblasen, überschreiben OnCreateOptionsMenu wir die Aktivitätsunterklasse. Sobald wir einen Verweis auf das Menü haben, können wir die ShareActionProvider Von der ActionProvider Eigenschaft des Menüelements abrufen und dann die SetShareIntent-Methode verwenden, um die ShareActionProviderAbsicht festzulegen, wie unten gezeigt:
public override bool OnCreateOptionsMenu (IMenu menu)
{
MenuInflater.Inflate (Resource.Menu.ActionBarMenu, menu);
var shareMenuItem = menu.FindItem (Resource.Id.shareMenuItem);
var shareActionProvider =
(ShareActionProvider)shareMenuItem.ActionProvider;
shareActionProvider.SetShareIntent (CreateIntent ());
}
Erstellen der Absicht
Die ShareActionProvider Absicht wird verwendet, die an die SetShareIntent Methode im obigen Code übergeben wird, um die entsprechende Aktivität zu starten. In diesem Fall erstellen wir eine Absicht, ein Bild mithilfe des folgenden Codes zu senden:
Intent CreateIntent ()
{
var sendPictureIntent = new Intent (Intent.ActionSend);
sendPictureIntent.SetType ("image/*");
var uri = Android.Net.Uri.FromFile (GetFileStreamPath ("monkey.png"));
sendPictureIntent.PutExtra (Intent.ExtraStream, uri);
return sendPictureIntent;
}
Das Bild im obigen Codebeispiel ist als Ressource für die Anwendung enthalten und an einen öffentlich zugänglichen Speicherort kopiert, wenn die Aktivität erstellt wird, sodass sie für andere Anwendungen, z. B. die Messaging-App, zugänglich ist. Der Beispielcode, der zu diesem Artikel gehört, enthält die vollständige Quelle dieses Beispiels, die die Verwendung veranschaulicht.


