java android - Invio di array con Intent.putExtra



new second (4)

Questo codice invia una matrice di valori interi

Inizializza elenco matrici

List<Integer> test = new ArrayList<Integer>();

Aggiungi valori all'elenco di array

test.add(1);
test.add(2);
test.add(3);
Intent intent=new Intent(this, targetActivty.class);

Invia i valori dell'elenco di matrice all'attività di destinazione

intent.putIntegerArrayListExtra("test", (ArrayList<Integer>) test);
startActivity(intent);

qui ottieni valori su targetActivty

Intent intent=getIntent();
ArrayList<String> test = intent.getStringArrayListExtra("test");

Ho una matrice di numeri interi nell'attività A:

int array[] = {1,2,3};

E voglio inviare quella variabile all'attività B, quindi creo un nuovo intento e utilizzo il metodo putExtra:

Intent i = new Intent(A.this, B.class);
i.putExtra("numbers", array);
startActivity(i);

Nell'attività BI ottieni le informazioni:

Bundle extras = getIntent().getExtras();
int arrayB = extras.getInt("numbers");

Ma questo non è davvero l'invio dell'array, ho solo il valore '0' sull'array B. Ho cercato alcuni esempi ma non ho trovato nulla di simile.


final static String EXTRA_MESSAGE = "edit.list.message";

Context context;
public void onClick (View view)
{   
    Intent intent = new Intent(this,display.class);
    RelativeLayout relativeLayout = (RelativeLayout) view.getParent();

    TextView textView = (TextView) relativeLayout.findViewById(R.id.textView1);
    String message = textView.getText().toString();

    intent.putExtra(EXTRA_MESSAGE,message);
    startActivity(intent);
}

Stai impostando l'extra con un array. Stai quindi cercando di ottenere un singolo int.

Il tuo codice dovrebbe essere:

int[] arrayB = extras.getIntArray("numbers");

Se la matrice non è ordinata, dovrai eseguire iterazioni su tutto e fare una chiamata a uguale su ciascuna.

Se la matrice è ordinata, puoi fare una ricerca binaria, ce n'è una nella classe Arrays .

In generale, se si stanno facendo molti controlli sull'effettivo, è possibile memorizzare tutto in un Set, non in un array.





java android android-intent android-activity bundle