Je ne suis pas très clair sur l'objet Intent et comment l'utiliser pour transmettre des données entre les activités. Dans mon application j'ai plusieurs onglets entre lesquels je veux passer ArrayList. Voici un exemple de code que je prévois d'utiliser, mais il me manque la partie où l'activité principale attrape l'intention et la passe à la nouvelle activité au démarrage:Passage ArrayList <String> entre les onglets
1. myTabs.java ==> Ceci est où je pense que je dois ajouter du code pour transmettre les données entre TabOne et TabTwo. Pour l'instant, il utilise simplement l'exemple de code de l'exemple TabActivity.
public class myTabs extends TabActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Resources res = getResources(); // Resource object to get Drawables
TabHost tabHost = getTabHost(); // The activity TabHost
TabHost.TabSpec spec; // Reusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent().setClass(this, TabPeopleActivity.class);
// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("TabOne").setIndicator("TabOne",
res.getDrawable(R.drawable.ic_tab_one))
.setContent(intent);
tabHost.addTab(spec);
// Do the same for the other tabs
intent = new Intent().setClass(this, TabTransactionActivity.class);
spec = tabHost.newTabSpec("TabTwo").setIndicator("TabTwo",
res.getDrawable(R.drawable.ic_tab_two))
.setContent(intent);
tabHost.addTab(spec);
tabHost.setCurrentTab(0);
}
}
2. TabOne.java ==> J'ai ajouté un morceau de code dans la procédure onStop pour remplir les données d'intention avec le tableau que je veux passer à TabTwo. Je ne suis pas sûr que ce soit la bonne façon de le faire.
public class TabOne extends Activity {
[...]
private ArrayList<String> arrayPeople;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabone);
arrayPeople = new ArrayList<String>();
[... here we modify arrayPeople ...]
}
/** Called when the activity looses focus **/
@Override
public void onStop(){
Intent myIntent = new Intent();
myIntent.putStringArrayListExtra("arrayPeople", arrayPeople);
this.setIntent(myIntent);
}
}
3. TabTwo.java ==> Ici, je suis en train de chercher le ArrayList de l'intention qui est censé être passé quand l'activité commence. Mais comment faire cela?
public class TabTwo extends Activity {
private ArrayList<String> arrayPeople;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.transaction);
Intent myIntent = new Intent();
myIntent = this.getIntent();
arrayPeople = myIntent.getStringArrayListExtra("arrayPeople");
}
}
Merci pour vos idées!
EDIT:
D'accord, je vais faire simple, voici l'espace de travail complet du projet:
http://www.lecompteestbon.com/Android.LCEB.zip
Ce que je veux faire est une version hors ligne du site lecompteestbon, qui permet aux gens de faire la comptabilité entre amis après un week-end.
TabPeople = Add the list of friends
TabTransactions = List of expenses
TabTransaction = Add an expense
TabResult = Calculate the list of payments
Laissez-moi savoir comment faire ce travail :)
En utilisant une base de données semble trop avancée pour cette chose simple. Quand vous voulez dire "MyTabs.setArrayPeople" est-ce une solution similaire à celle proposée ci-dessus? – Christophe
Oui, l'utilisation d'une ArrayList statique serait la meilleure. – m6tt