Autore Topic: Variabile "difficile" da Condividere tra Activity!  (Letto 802 volte)

Offline StepGiordano

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    P500
  • Sistema operativo:
    Windows 7
Variabile "difficile" da Condividere tra Activity!
« il: 29 Marzo 2012, 16:01:26 CEST »
0
Ciao a tutti  :-) ho un problema... Vorrei rendere "Condivisa" la variabile scanResult ad un altra Activity! Come posso fare? Grazie a tutti  :-)

package it.XXXXXX.XXXXXXX;

import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class barcodescanner extends Activity {
   private static final Intent SCAN_INTENT = new Intent("com.google.zxing.client.android.SCAN");
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainbarcode);
       
        PackageManager packageManager = this.getPackageManager();
        ResolveInfo resolveInfo = packageManager.resolveActivity(SCAN_INTENT, PackageManager.GET_RESOLVED_FILTER);
        if(resolveInfo==null) {
           ((Button)this.findViewById(R.id.cercabarcode)).setEnabled(false);
           ((TextView)this.findViewById(R.id.scanResult)).setText("Non hai installato nessuna applicazione per effettuare lo scan!!!\nScaricala qui: https://market.android.com/details?id=com.google.zxing.client.android&feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5nb29nbGUuenhpbmcuY2xpZW50LmFuZHJvaWQiXQ..");
        }
    }

   @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
      if (resultCode == Activity.RESULT_OK && requestCode == 0) {
         String scanResult = data.getStringExtra("SCAN_RESULT");
         ((TextView)this.findViewById(R.id.scanResult)).setText(String.format("Risultato dello scan: %1$s", scanResult));         
      }
      else {
         ((TextView)this.findViewById(R.id.scanResult)).setText("Operazione annullata!");
      }
   }
   
    public void onScan(View view) {
       startActivityForResult(SCAN_INTENT, 0);
    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
        if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR
                && keyCode == KeyEvent.KEYCODE_BACK
                && event.getRepeatCount() == 0) {
            // Take care of calling this method on earlier versions of
            // the platform where it doesn't exist.
            onBackPressed();
        }

        return super.onKeyDown(keyCode, event);
    }

    @Override
    public void onBackPressed() {
        // This will be called either automatically for you on 2.0
        // or later, or by the code above on earlier versions of the
        // platform.
       finish();
    }
}

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Variabile "difficile" da Condividere tra Activity!
« Risposta #1 il: 29 Marzo 2012, 16:08:14 CEST »
0

Offline StepGiordano

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    P500
  • Sistema operativo:
    Windows 7
Re:Variabile "difficile" da Condividere tra Activity!
« Risposta #2 il: 29 Marzo 2012, 16:12:22 CEST »
0
oddio! e quale devo usare delle tante  ???  Scusa per la mia ignoranza.. ma è la prima app che sviluppo.. e condividere la variabile mi sta portando molte difficoltà!

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Variabile "difficile" da Condividere tra Activity!
« Risposta #3 il: 29 Marzo 2012, 16:28:57 CEST »
+1
Il modo "pulito" è quello di passare da un activity all'altra i parametri con putextra.

http://www.anddev.it/index.php?topic=104.0

Se non è sufficiente quel tipo di condivisione dei dati che ho linkato e vuoi usare la classe Application fai così:

Ti definisci una classe MyApplication

Codice (Java): [Seleziona]
public class MyApplication extends Application  
{      
     public MyClass miaClasse = new MyClass();
}

Nel tuo manifest devi dichiarare la application:

Codice (XML): [Seleziona]
<application
       android:name="tuopackage.MyApplication" />

A quel punto per esempio se hai un metodo in MyClass che si chiama faiqualcosa() lo puoi richiamare così:

Codice (Java): [Seleziona]
MyApplication myapp = ((MyApplication)this.getApplication());
myApp.miaClasse.faiqualcosa();

Puoi ovviamente leggere/scrivere i membri pubblici della MyApplication, così come puoi usare un singleton pattern.

Comunque a meno di particolari bisogni usare l'intent è più pulito. :-)

Offline StepGiordano

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    P500
  • Sistema operativo:
    Windows 7
Re:Variabile "difficile" da Condividere tra Activity!
« Risposta #4 il: 29 Marzo 2012, 21:04:09 CEST »
0
ho provato a combinare le cose ma nnt... potreste farmi un esempio proprio sul mio codice java? Grazie mille

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Variabile "difficile" da Condividere tra Activity!
« Risposta #5 il: 30 Marzo 2012, 09:24:20 CEST »
0
Con intent o con application?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Variabile "difficile" da Condividere tra Activity!
« Risposta #6 il: 30 Marzo 2012, 10:31:31 CEST »
0
ho provato a combinare le cose ma nnt... potreste farmi un esempio proprio sul mio codice java? Grazie mille

Più che chiedere l'esempio faresti meglio a postare il codice delle tue prove e l'errore che ottieni ;)