Android - Navigation

Dans ce chapitre, nous verrons comment vous pouvez fournir une navigation vers l'avant et vers l'arrière entre une application. Nous allons d'abord voir comment fournir une navigation dans une application.

Fournir la navigation

La navigation vers le haut permettra à notre application de passer à l'activité précédente à partir de l'activité suivante. Cela peut être fait comme ça.

Pour implémenter la navigation vers le haut, la première étape consiste à déclarer quelle activité est le parent approprié pour chaque activité. Vous pouvez le faire en spécifiantparentActivityNameattribut dans une activité. Sa syntaxe est donnée ci-dessous -

android:parentActivityName = "com.example.test.MainActivity"

Après cela, vous devez appeler setDisplayHomeAsUpEnabled méthode de getActionBar()dans la méthode onCreate de l'activité. Cela activera le bouton de retour dans la barre d'actions supérieure.

getActionBar().setDisplayHomeAsUpEnabled(true);

La dernière chose à faire est de passer outre onOptionsItemSelectedméthode. lorsque l'utilisateur appuie dessus, votre activité reçoit un appel à onOptionsItemSelected (). L'ID de l'action estandroid.R.id.home.Sa syntaxe est donnée ci-dessous -

public boolean onOptionsItemSelected(MenuItem item) {
   
   switch (item.getItemId()) {
      case android.R.id.home:
      NavUtils.navigateUpFromSameTask(this);
      return true;
   }	
}

Bouton de retour de l'appareil de manipulation

Puisque vous avez activé votre bouton de retour pour naviguer dans votre application, vous souhaiterez peut-être placer la fonction de fermeture de l'application dans le bouton de retour de l'appareil.

Cela peut être fait en remplaçant onBackPressed puis appeler moveTaskToBack et finishméthode. Sa syntaxe est donnée ci-dessous -

@Override
public void onBackPressed() {
   moveTaskToBack(true); 
   MainActivity2.this.finish();
}

En dehors de cette méthode setDisplayHomeAsUpEnabled, il existe d'autres méthodes disponibles dans la classe API ActionBar. Ils sont listés ci-dessous -

Sr. Non Méthode et description
1

addTab(ActionBar.Tab tab, boolean setSelected)

Cette méthode ajoute un onglet à utiliser en mode de navigation par onglets

2

getSelectedTab()

Cette méthode renvoie l'onglet actuellement sélectionné si en mode de navigation par onglets et qu'au moins un onglet est présent

3

hide()

Cette méthode masque l'ActionBar si elle est actuellement affichée

4

removeAllTabs()

Cette méthode supprime tous les onglets de la barre d'action et désélectionne l'onglet actuel

5

selectTab(ActionBar.Tab tab)

Cette méthode sélectionne l'onglet spécifié

Exemple

L'exemple ci-dessous illustre l'utilisation de Navigation. Il crée une application de base qui vous permet de naviguer dans votre application.

Pour expérimenter cet exemple, vous devez l'exécuter sur un appareil réel ou dans un émulateur.

Pas La description
1 Vous utiliserez Android Studio pour créer une application Android sous un package com.example.sairamkrishna.myapplication.
2 Modifiez le fichier src / MainActivity.java pour ajouter le code d'activité.
3 Créez une nouvelle activité avec le nom second_main.java et modifiez-la pour ajouter un code d'activité.
4 Modifiez le fichier XML de mise en page res / layout / activity_main.xml, ajoutez tout composant GUI si nécessaire.
5 Modifiez le fichier XML de mise en page res / layout / second.xml, ajoutez un composant GUI si nécessaire.
6 Modifiez AndroidManifest.xml pour ajouter le code nécessaire.
sept Exécutez l'application et choisissez un appareil Android en cours d'exécution, installez l'application dessus et vérifiez les résultats.

Voici le contenu de src/MainActivity.java.

package com.example.sairamkrishna.myapplication;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity  {
   Button b1;

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

      b1 = (Button) findViewById(R.id.button);
      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            Intent in=new Intent(MainActivity.this,second_main.class);
            startActivity(in);
         }
      });
   }
}

Voici le contenu de src/second_main.java.

package com.example.sairamkrishna.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

/**
   * Created by Sairamkrishna on 4/6/2015.
*/

public class second_main extends Activity {
   WebView wv;

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

      wv = (WebView) findViewById(R.id.webView);
      wv.setWebViewClient(new MyBrowser());
      wv.getSettings().setLoadsImagesAutomatically(true);
      wv.getSettings().setJavaScriptEnabled(true);
      wv.loadUrl("http://www.tutorialspoint.com");
   }

   private class MyBrowser extends WebViewClient {
      @Override
      public boolean shouldOverrideUrlLoading(WebView view, String url) {
         view.loadUrl(url);
         return true;
      }
   }
}

Voici le contenu de activity_main.xml.

Dans le code ci-dessous abcindique le logo de tutorialspoint.com
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin"
   tools:context=".MainActivity"
   android:transitionGroup="true">
   
   <TextView android:text="Navigation example" android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/textview"
      android:textSize="35dp"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point"
      android:id="@+id/textView"
      android:layout_below="@+id/textview"
      android:layout_centerHorizontal="true"
      android:textColor="#ff7aff24"
      android:textSize="35dp" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/abc"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true"
      android:theme="@style/Base.TextAppearance.AppCompat" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="first page"
      android:id="@+id/button"
      android:layout_below="@+id/imageView"
      android:layout_alignRight="@+id/textView"
      android:layout_alignEnd="@+id/textView"
      android:layout_marginTop="61dp"
      android:layout_alignLeft="@+id/imageView"
      android:layout_alignStart="@+id/imageView" />

</RelativeLayout>

Voici le contenu de activity_main_activity2.xml.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical" android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:weightSum="1">
   
   <WebView
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:id="@+id/webView"
      android:layout_gravity="center_horizontal"
      android:layout_weight="1.03" />

</LinearLayout>

Voici le contenu de Strings.xml.

<resources>
   <string name="app_name">My Application</string>
</resources>

Voici le contenu de AndroidManifest.xml.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >
   <uses-permission android:name="android.permission.INTERNET"></uses-permission>
   
   <application
      android:allowBackup="true"
      android:icon="@mipmap/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=".second_main"></activity>
      
   </application>
</manifest>

Essayons d'exécuter votre application. Je suppose que vous avez créé votreAVDlors de la configuration de l'environnement. Pour exécuter l'application à partir du studio Android, ouvrez l'un des fichiers d'activité de votre projet et cliquez sur l' icône Exécuter dans la barre d'outils. Le studio Android installe l'application sur votre AVD et la démarre et si tout va bien avec votre configuration et votre application, elle affichera la fenêtre suivante de l'émulateur -

Maintenant, appuyez simplement sur le bouton et l'écran suivant vous sera affiché.

La deuxième activité contient une vue Web, elle a été redirigée vers tutorialspoint.com comme indiqué ci-dessous