2013-02-21 5 views
5

Ciao ho sviluppato un'app che ha una casella di testo e un pulsante di ricerca quando inserisco un numero nella casella di testo e clicco sul pulsante di ricerca di cui ha bisogno per passare il valore inserito alla prossima attività in cui utilizza tale valore per ottenere il valore da un database.Passaggio di valore da un'attività all'altra in Android

Sto usando il seguente codice per passare il valore.

search_button.setClickable(true); 
     search_button.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
     // TODO Auto-generated method stub 
     String outlet_no = outlet_id.getText().toString(); 
     System.out.println(outlet_no); 
     if(!outlet_no.isEmpty()){ 
     @SuppressWarnings("deprecation") 
     SharedPreferences myPrefs = getApplicationContext().getSharedPreferences("myPrefs", MODE_WORLD_READABLE); 
     SharedPreferences.Editor prefsEditor = myPrefs.edit(); 

     prefsEditor.putString("outlet_id", outlet_no); 
     prefsEditor.commit(); 

     Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class);  
     startActivity(myIntent); 
     HomeActivity.this.startActivity(myIntent); 
     } 
     else{ 
      Toast.makeText(getApplicationContext(), "Please enter an outlet id", Toast.LENGTH_SHORT); 
     } 
     } 
    }); 

Il mio problema è che non passa il valore. Qualcuno mi può aiutare con questo e può anche qualsiasi mi spieghi il codice di cui sopra come non ho scritto e sto trovando difficile capirlo.

collaterali StoreActivity

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.store);  
     myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);    
     mOutletID = myPrefs.getString("outlet_id", "0"); 
     mOutletDetails = myPrefs.getString("outlet_details","{}"); 
     Log.v("outlet_details",myPrefs.getString("outlet_details","{}")); 
     if(mOutletDetails != "{}"){ 
      setOutletData(mOutletDetails); 
     } 
     else{ 
      executeAjaxRequest(); 
     } 
    }  

risposta

9

errori che hai fatto:

1) Perché stai cercando di iniziare l'attività due volte?

startActivity(myIntent); // this is OK 
HomeActivity.this.startActivity(myIntent); 

2) Per passare il testo immesso da un'attività all'altra, è possibile utilizzare putExtra() metodo di intenti, per esempio:

myIntent.putExtra("SearchText", outlet_no); 

Così il vostro codice completo sarebbe:

Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class); 
myIntent.putExtra("SearchText", outlet_no);  
startActivity(myIntent); 

3) Per ricevere il valore superato dalla prima attività:

Intent intent = getIntent(); 
Bundle bundle = intent.getExtras(); 
String outlet_no= bundle.getString("SearchText"); 

4) SharedPreferences:

proposito, SharedPreference consente di salvare piccola quantità di dati che può essere utilizzato riferimento e successivamente attraverso l'applicazione.

Si dovrebbe fare riferimento sotto i collegamenti:

  1. SharedPreferences
  2. Intent
  3. Intent and Intent Filters
+0

non ho scritto questo codice e ci sono molti bug che sto scodinzolando per correggere ... –

+1

@JayantShinde Basta passare attraverso la mia risposta. –

+0

no non onl questi errori ho alcuni più errori puoi aiutarmi a risolvere il problema come sono in libertà vigilata sul mio posto di lavoro e ho bisogno di dare questo al più presto possibile e sto trovando difficile correggere come io non sono addestrato su android ... –

3
Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class); 
myIntent.putExtra("searchString", outlet_no);  
startActivity(myIntent); 

Questo invierà il searchString al StoreActivity

.210

e in StoreActivity è possibile recuperare il valore con:

String s = getIntent.getStringExtra("searchString"); 
0

si può provare qualcosa di simile: -

Attività A

myIntent.putExtra(var, value); // Putting the value 
startActivity(myIntent); 

Attività B

String value = getIntent().getStringExtra(var); // Getting the value 
-1

Si può semplicemente scrivere come

Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class); 
     myIntent.putExtra("outlet_no",outlet_no); 
     startActivity(myIntent); 

Fatemi sapere se questo ha funzionato oppure no.

0

Il modo più semplice per farlo sarebbe quello di passare l'id di sessione all'attività SignOut nell'intento che si sta utilizzando per iniziare l'attività:

Intent intent = new Intent(getBaseContext(), SignoutActivity.class); 
intent.putExtra("EXTRA_SESSION_ID", sessionId); 
startActivity(intent) 

Il docs per Intenti ha più informazioni (vedi la sezione intitolata "Extra").

2

nel metodo onClick, ha il seguente codice:

String outlet_no = outlet_id.getText().toString(); 
    if(!outlet_no.isEmpty()){ 
     Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class); 
     myIntent.putExtra("outlet_id",outlet_no); 
     startActivity(myIntent); 
    } 
    else{ 
     Toast.makeText(getApplicationContext(), "Please enter an outlet id", Toast.LENGTH_SHORT); 
    } 

Ora, nel StoreActivity, nel metodo onCreate() avere qualcosa di simile:

String outlet_no = getIntent().getStringExtra("outlet_id"); 
if (outlet_no != null) //Just a defensive check 
    //Start your processing 
-1

Attività A

myIntent.putExtra(var, value); // Putting the value 
startActivity(myIntent); 

Attività B

String value = getIntent().getStringExtra(var); // Getting the value 
1

È anche possibile farlo con Intenti.

Say, abbiamo 2 attività: SourceActivity & DestinationActivity e vogliamo passare il valore SourceActivity per DestinationActivity

nel vostro Button OnClickListener:

String str_outlet_no = outlet_no.getText().toString(); 
Intent intent = new Intent(SourceActivity.this, DestinationActivity.class); 
intent.putExtra("outlet_no_key", outlet_no); 
startActivity(intent); 

e dall'altra parte in DestinationActivity:

Intent intent = getIntent(); 
String desi = intent.getStringExtra("outlet_no"); 

e ricerca desi dal database