Autore Topic: Problema Navigazione Activity  (Letto 383 volte)

Offline IRobot

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S (Android 2.3.7)
  • Sistema operativo:
    Windows 7
Problema Navigazione Activity
« il: 08 Novembre 2014, 15:14:05 CET »
0
Salve a tutti.
Mentre mi stavo accingendo a creare una piccola app per Android, mi sono imbatutto in un errore abbastanza fastidioso.
Riassumendo:

Nel mio progetto ho 3 Activity di cui A= SplashSceen B= MainActivity C= SecondaActivity.
Appena passo alla Activity C e vorrei ritornare a quella B via il pulsante Back o dalla Freccia in alto a Sinsitra, al posto di passare a B mi esce direttamente alla home di Android.
Come posso risolvere questo problema ?

Minimum SDK; API 14

SplashActivity:
Codice (Java): [Seleziona]
package com.kitchentimer.pavloromanyuk.kitchentimer;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;

public class SplashScreen extends Activity {

    // Splash screen timer
    private static int SPLASH_TIME_OUT = 3000;

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

        new Handler().postDelayed(new Runnable() {
 
            /*
             * Showing splash screen with a timer. This will be useful when you
             * want to show case your app logo / company
             */


            @Override
            public void run() {
                // This method will be executed once the timer is over
                // Start your app main activity
                Intent i = new Intent(SplashScreen.this, MainActivity.class);
                startActivity(i);

                // close this activity
                finish();
            }
        }, SPLASH_TIME_OUT);
    }

}

MainActivity:

Codice (Java): [Seleziona]
package com.kitchentimer.pavloromanyuk.kitchentimer;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;



public class MainActivity extends Activity {

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


    }


            @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;

            }


            @Override
            public boolean onOptionsItemSelected(MenuItem item) {

                switch (item.getItemId()) {
                    case R.id.action_settings:
                        setContentView(R.layout.activity_about);
                        return true;

                    default:
                        return super.onOptionsItemSelected(item);

                }

            }
        }

SecondaActivity:

Codice (Java): [Seleziona]
package com.kitchentimer.pavloromanyuk.kitchentimer;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MenuItem;


public class AboutActivity extends Activity {

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

    }



 }

Manifest.xml:

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.kitchentimer.pavloromanyuk.kitchentimer" >
    <application
       android:allowBackup="true"
       android:icon="@drawable/logo"
       android:label="@string/app_name"
       android:theme="@style/AppTheme" >
        <!-- Splash screen -->
        <activity
           android:name="com.kitchentimer.pavloromanyuk.kitchentimer.SplashScreen"
           android:label="@string/app_name"
           android:screenOrientation="portrait"
           android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- Main activity -->
        <activity
           android:name="com.kitchentimer.pavloromanyuk.kitchentimer.MainActivity"
           android:parentActivityName="com.kitchentimer.pavloromanyuk.kitchentimer.MainActivity"
           android:label="@string/app_name"
           android:screenOrientation="portrait">
            <meta-data
               android:name="android.support.PARENT_ACTIVITY"
               android:value="com.kitchentimer.pavloromanyuk.kitchentimer.MainActivity" />

        </activity>

        <!-- About Activity -->
        <activity
           android:name="com.kitchentimer.pavloromanyuk.kitchentimer.AboutActivity"

           android:label="@string/app_name"
           android:screenOrientation="portrait"
           >
        </activity>

    </application>

</manifest>

Offline dellaz

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Nexus 7 (2012), Samsung s6 Edge
  • Sistema operativo:
    Win 8.1, Ubuntu 16.10, Mac OS X 10.10 (Yosemite)
Re:Problema Navigazione Activity
« Risposta #1 il: 08 Novembre 2014, 19:04:11 CET »
0
Ciao, nel codice non hai mostrato come avviene l'apertura dell'activity C, per cui posso solo fare ipotesi..
Non è che per caso nella activity B hai chiamato il metodo finish() dopo aver lanciato la C?
LogCat is the way!
Hai trovato utile una risposta? Clicca su

Offline IRobot

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S (Android 2.3.7)
  • Sistema operativo:
    Windows 7
Re:Problema Navigazione Activity
« Risposta #2 il: 08 Novembre 2014, 19:12:28 CET »
0
Ciao, nel codice non hai mostrato come avviene l'apertura dell'activity C, per cui posso solo fare ipotesi..
Non è che per caso nella activity B hai chiamato il metodo finish() dopo aver lanciato la C?

La activity C si chiama "AboutActivity" e viene lanciata grazie al menu "Settings" da qui;

Codice (Java): [Seleziona]
@Override
            public boolean onOptionsItemSelected(MenuItem item) {

                switch (item.getItemId()) {
                    case R.id.action_settings:
                       setContentView(R.layout.activity_about);
                        return true;

                    default:
                        return super.onOptionsItemSelected(item);

                }

            }

di preciso con:

Codice (Java): [Seleziona]
setContentView(R.layout.activity_about);
E nell'activity B non c'è il metodo Finish.

Offline dellaz

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Nexus 7 (2012), Samsung s6 Edge
  • Sistema operativo:
    Win 8.1, Ubuntu 16.10, Mac OS X 10.10 (Yosemite)
Re:Problema Navigazione Activity
« Risposta #3 il: 08 Novembre 2014, 19:17:29 CET »
+1
Ah non me n'ero accorto ;-)
Il problema è che con quel codice non stai lanciando una nuova activity, ma stai semplicemente impostando all'activity attuale (cioè la MainActivity) un nuovo layout. Quindi di fatto stai continuando a lavorare sulla MainActivity, non sulla SettingsActivity. Quello che dovresti fare, invece, sarebbe di chiamare il metodo startActivity(). In questo modo, infatti, premendo il tasto BACK torneresti alla MainActivity
LogCat is the way!
Hai trovato utile una risposta? Clicca su