Android - Navigazione

In questo capitolo vedremo come fornire la navigazione avanti e indietro tra un'applicazione. In primo luogo esamineremo come fornire la navigazione in un'applicazione.

Fornire la navigazione

La navigazione verso l'alto consentirà alla nostra applicazione di passare all'attività precedente dall'attività successiva. Si può fare così.

Per implementare la navigazione su, il primo passaggio è dichiarare quale attività è il genitore appropriato per ciascuna attività. Puoi farlo specificandoparentActivityNameattributo in un'attività. La sua sintassi è data di seguito:

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

Dopodiché devi chiamare setDisplayHomeAsUpEnabled metodo di getActionBar()nel metodo onCreate dell'attività. Ciò abiliterà il pulsante Indietro nella barra delle azioni in alto.

getActionBar().setDisplayHomeAsUpEnabled(true);

L'ultima cosa che devi fare è sovrascrivere onOptionsItemSelectedmetodo. quando l'utente lo preme, la tua attività riceve una chiamata a onOptionsItemSelected (). L'ID dell'azione èandroid.R.id.homeLa sua sintassi è data di seguito:

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

Pulsante indietro dispositivo di manipolazione

Poiché hai abilitato il pulsante Indietro per navigare all'interno dell'applicazione, potresti voler inserire la funzione di chiusura dell'applicazione nel pulsante Indietro del dispositivo.

Può essere eseguito sovrascrivendo onBackPressed e poi chiamando moveTaskToBack e finishmetodo. La sua sintassi è data di seguito:

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

Oltre a questo metodo setDisplayHomeAsUpEnabled, sono disponibili altri metodi nella classe API ActionBar. Sono elencati di seguito:

Suor n Metodo e descrizione
1

addTab(ActionBar.Tab tab, boolean setSelected)

Questo metodo aggiunge una scheda da utilizzare nella modalità di navigazione a schede

2

getSelectedTab()

Questo metodo restituisce la scheda attualmente selezionata se in modalità di navigazione a schede ed è presente almeno una scheda

3

hide()

Questo metodo nasconde la ActionBar se è attualmente visualizzata

4

removeAllTabs()

Questo metodo rimuove tutte le schede dalla barra delle azioni e deseleziona la scheda corrente

5

selectTab(ActionBar.Tab tab)

Questo metodo seleziona la scheda specificata

Esempio

L'esempio seguente mostra l'uso della navigazione. Crea un'applicazione di base che ti consente di navigare all'interno della tua applicazione.

Per sperimentare questo esempio, è necessario eseguirlo su un dispositivo reale o in un emulatore.

Passi Descrizione
1 Utilizzerai Android Studio per creare un'applicazione Android con un pacchetto com.example.sairamkrishna.myapplication.
2 Modifica il file src / MainActivity.java per aggiungere il codice dell'attività.
3 Crea una nuova attività con il nome di second_main.java e modificala per aggiungere il codice attività.
4 Modifica il file XML di layout res / layout / activity_main.xml aggiungi qualsiasi componente della GUI se necessario.
5 Modifica layout file XML res / layout / second.xml aggiungere qualsiasi componente GUI, se necessario.
6 Modifica AndroidManifest.xml per aggiungere il codice necessario.
7 Esegui l'applicazione e scegli un dispositivo Android in esecuzione, installa l'applicazione su di esso e verifica i risultati.

Ecco il contenuto di 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);
         }
      });
   }
}

Ecco il contenuto di 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;
      }
   }
}

Ecco il contenuto di activity_main.xml.

Nel codice sottostante abcindica il logo di 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>

Ecco il contenuto di 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>

Ecco il contenuto di Strings.xml.

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

Ecco il contenuto di 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>

Proviamo a eseguire la tua applicazione. Presumo che tu abbia creato il tuoAVDdurante l'impostazione dell'ambiente. Per eseguire l'app da Android Studio, apri uno dei file di attività del tuo progetto e fai clic sull'icona Esegui dalla barra degli strumenti. Android Studio installa l'app sul tuo AVD e la avvia e se tutto va bene con la configurazione e l'applicazione, verrà visualizzata la seguente finestra dell'emulatore

Ora basta premere il pulsante e ti verrà mostrata la seguente schermata.

La seconda attività contiene webview, è stata reindirizzata a tutorialspoint.com come mostrato di seguito