Autore Topic: Variabile globale fra due o più activity  (Letto 556 volte)

Offline vinciuks98

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
Variabile globale fra due o più activity
« il: 08 Marzo 2014, 22:12:44 CET »
0
Sera a tutti! Mi sono appena iscritto e sono appassionato alla programmazione android. Ho creato un'app in cui cliccando sul bottone posto al centro dello schermo il counter aumenta mentre un countdown porta i secondi e alla fine blocca il tutto. Ogni 50 click si aggiungono 5€ alla moneta virtuale, ora ho un problema, tutto funziona alla perfezione se non per il fatto che vorrei riportare i soldi guadagnati nelle altre activity in modo da aggiungere uno shop per gli aiuti. Come faccio? Mi servirebbe una variabile globale. Non vorrei chieder troppo, ma io non sono riuscito ad aggiungerla tramite i codici reperiti su internet,ma nulla! C'è qualcuno che potrebbe modificare il codice in modo da avere una variabile  globale in tutti e due le activity?  :-( :-( ;-)
HELP!!!
Activity1
Codice (Java): [Seleziona]
package com.mkyong.android;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;





public class AppActivity extends Activity {

        Button button;
        Button level;
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                addListenerOnButton();
        }

        public void addListenerOnButton() {

                final Context context = this;

                button = (Button) findViewById(R.id.button1);
                level = (Button) findViewById(R.id.level2);
                level.setOnClickListener(new OnClickListener() {
                        public void onClick(View arg0) {
               
                                Intent pagedue = new Intent(context, level3.class);
                startActivity(pagedue);  

                        }
                });
                button.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View arg0) {

                                Intent intent = new Intent(context, App2Activity.class);
                startActivity(intent);  

                        }

                });

        }

}

App2Activity
Codice (Java): [Seleziona]
package com.mkyong.android;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.RatingBar;
import android.widget.TextView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.os.CountDownTimer;
public class App2Activity extends Activity {
        TextView TextView2;
        Button button;
        TextView clickfast;
        TextView obiettivo;
        int soldi = 0;
        TextView TextView3;
        private RatingBar ratingBar;
        int counter = 0;
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main2);
        TextView2 = (TextView)this.findViewById(R.id.textView2);
        TextView3 = (TextView)this.findViewById(R.id.textView3);
        obiettivo = (TextView)this.findViewById(R.id.textView4);
        ratingBar = (RatingBar) findViewById(R.id.ratingBar1);
        clickfast = (TextView)this.findViewById(R.id.textView1);
        button = (Button)this.findViewById(R.id.button1);
        button.setOnClickListener(new OnClickListener() {
                public void onClick(View arg0) {
                        counter = counter + 1;
                        if(counter == 100) {
                               
                                clickfast.setText("Win! Win!");
                        }
                        TextView2.setText("Click Eseguiti"+counter);
               
                       
                       
                        new CountDownTimer(30000, 1000) {

                             public void onTick(long millisUntilFinished) {
                                 TextView3.setText("Da ora hai 30 secondi!");
                             }

                             public void onFinish() {
                                 TextView3.setText("Tempo Finito!");
                                 if(counter == 350){
                                         obiettivo.setText("GOD!");
                                         ratingBar.setVisibility(View.VISIBLE);
                                         ratingBar.setRating(5);
                                 }
                                 if(counter == 330){
                                         obiettivo.setText("Master!");
                                         ratingBar.setVisibility(View.VISIBLE);
                                         ratingBar.setRating(5);
                                 }
                                 if(counter >= 300){
                                         obiettivo.setText("Complimenti!");
                                         ratingBar.setVisibility(View.VISIBLE);
                                         ratingBar.setRating(5);
                                 }
                                 if(counter >= 250){
                                         obiettivo.setText("Bravissimo!");
                                         ratingBar.setVisibility(View.VISIBLE);
                                         ratingBar.setRating(4);
                                 }
                                 if(counter >= 200){
                                         obiettivo.setText("Bravo!");
                                         ratingBar.setVisibility(View.VISIBLE);
                                         ratingBar.setRating(3);
                                 }
                                 if(counter >= 150){
                                         obiettivo.setText("Buono...");
                                         ratingBar.setVisibility(View.VISIBLE);
                                         ratingBar.setRating(2);
                                 }
                                 if(counter >= 80 ){
                                         obiettivo.setText("Scarso...");
                                         ratingBar.setVisibility(View.VISIBLE);
                                         ratingBar.setRating(1);
                                 }
                                 if(counter >= 50){
                                         obiettivo.setText("Bleah!");
                                         ratingBar.setVisibility(View.VISIBLE);
                                         ratingBar.setRating(0);
                                 }
                                 if(counter >= 100){
                                         obiettivo.setText("Obbiettivo completato!");
                                         ratingBar.setVisibility(View.VISIBLE);
                                         ratingBar.setRating(4);
                                 }
                                 button.setOnClickListener(new OnClickListener() {
                                         public void onClick(View arg0){
                                                 counter = counter + 0;
                                         }
                                 });
                             }
                          }.start();
                         
                         
               
               
                }
        });
        }
}

Main1
Codice (Java): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout1"
    android:background="@drawable/sfondo"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        android:layout_width="44dp"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:layout_marginLeft="18dp"
        android:text="1" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="113dp"
        android:text="Scegli il livello:"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <Button
        android:id="@+id/level2"
        android:layout_width="44dp"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button1"
        android:layout_alignBottom="@+id/button1"
        android:layout_alignLeft="@+id/textView1"
        android:text="2"
        android:visibility="visible" />

</RelativeLayout>

Main2
Codice (Java): [Seleziona]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/aiuto"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_centerHorizontal="true"
    android:background="@drawable/bg" >
       
    <Button
        android:id="@+id/button1"
        android:layout_width="fill_parent"
        android:layout_height="200dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_centerHorizontal="true"
        android:text="!Clicca!Clicca!" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="20dp"
        android:layout_height="62dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="22dp"
        android:text="Click Fast"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textSize="50dp" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_below="@+id/textView2"
        android:layout_centerHorizontal="true"
        android:text="Il timer partirà al primo click!"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:layout_centerHorizontal="true"
        android:layout_marginLeft="54dp"
        android:text="Click Eseguiti: 0"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textSize="20sp" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView3"
        android:layout_centerHorizontal="true"
        android:text="Obiettivo: Raggiungi 100 Click!"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <RatingBar
        android:id="@+id/ratingBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView4"
        android:layout_centerHorizontal="true"
        android:max="10"
        android:visibility="invisible" />

</RelativeLayout>

In poche parole se è possibile potete aggiungere una variabile  globale?
Si può fare modificando questo codice o bisogna riscrivere il tutto?
Ringrazio in anticipo!!! :D
Edit:
Non fate caso agli import aggiunti inutilmente poichè successivamente li eliminerò!

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:Variabile globale fra due o più activity
« Risposta #1 il: 09 Marzo 2014, 01:40:11 CET »
0
così su due piedi mi vengono 2 soluzioni possibili
la prima, ogni volta che da un activity vai all'altra, passa il valore della variabile come extra dell'intent
la seconda (forse migliore) salva la variabile come shared preferencies, e la apri dall'altra activity

Offline maverik1408

  • Utente junior
  • **
  • Post: 100
  • Respect: +1
    • Mostra profilo
    • MaverikApps
  • Dispositivo Android:
    NEXUS 5
  • Play Store ID:
    Maverik
Re:Variabile globale fra due o più activity
« Risposta #2 il: 09 Marzo 2014, 08:11:28 CET »
0
ciao secondo me potresti crearti una classe con extends Application, almeno io faccio così quando mi servono variabili globali

Codice (Java): [Seleziona]
public class GlobalVariables extends Application {             
        public static int mMonete;
}
Maverik @ Google Play Store

Offline vinciuks98

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
Re:Variabile globale fra due o più activity
« Risposta #3 il: 09 Marzo 2014, 11:10:00 CET »
0
Il mio problema è proprio COME FAR PASSARE UNA VARIABILE AD UN ALTRA ACTIVITY.? non esiste un'esempio magari pronto da scaricare così magari imparo come funziona?

Offline mirkus87

  • Utente junior
  • **
  • Post: 56
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
  • Play Store ID:
    Mirko Vitiello
  • Sistema operativo:
    Windows 7
Re:Variabile globale fra due o più activity
« Risposta #4 il: 09 Marzo 2014, 11:32:36 CET »
0

Offline FrancescoAndroid

  • Utente junior
  • **
  • Post: 69
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    GiMiSiS Interactive
  • Sistema operativo:
    Android 2.3.3
Re:Variabile globale fra due o più activity
« Risposta #5 il: 11 Marzo 2014, 15:04:24 CET »
0
io ti consiglio shared tutta la vita.

SharedPreferences | Android Developers