IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Plusieurs petits bugs et questions sur la gestion


Sujet :

Android

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2014
    Messages : 39
    Points : 25
    Points
    25
    Par défaut Plusieurs petits bugs et questions sur la gestion
    Bonjour

    Tout allait bien, j'ai divisé mon programme en 2 activitée et maintenant quand j'appuis sur mes boutons ca plante... On dirait un manque de mémoire ou je ne sais quois. Mais si je manque de mémoire avec le peu que j'ai fait (ce qui me semble peu probable) alors mieux vaut abandonné le projet.

    j'utilise
    android:minSdkVersion="16"
    android:targetSdkVersion="19"

    Ma plus grosse image PNG fait 181*463 bytes.

    Est-ce qu'il y a une limite dans le poids des images?
    Est-ce qu'il y a de quois que j'ai mal initialisé ou que je devrais mieux géré... le MediaPlaye, le Thread, le ShareProfile...??


    voici ce que mon logcat me donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    01-21 16:33:41.605: E/Trace(653): error opening trace file: No such file or directory (2)
    01-21 16:33:42.834: D/dalvikvm(653): GC_FOR_ALLOC freed 39K, 3% free 10785K/11011K, paused 418ms, total 440ms
    01-21 16:33:42.995: I/dalvikvm-heap(653): Grow heap (frag case) to 12.026MB for 1536016-byte allocation
    01-21 16:33:43.495: D/dalvikvm(653): GC_CONCURRENT freed <1K, 3% free 12284K/12551K, paused 62ms+39ms, total 489ms
    01-21 16:33:44.315: D/dalvikvm(653): GC_FOR_ALLOC freed 0K, 3% free 12284K/12551K, paused 37ms, total 38ms
    01-21 16:33:44.377: I/dalvikvm-heap(653): Grow heap (frag case) to 17.885MB for 6144016-byte allocation
    01-21 16:33:44.583: D/dalvikvm(653): GC_CONCURRENT freed 0K, 2% free 18284K/18567K, paused 28ms+61ms, total 203ms
    01-21 16:33:47.365: D/dalvikvm(653): GC_FOR_ALLOC freed 1549K, 10% free 17418K/19207K, paused 53ms, total 54ms
    01-21 16:33:47.396: I/dalvikvm-heap(653): Grow heap (frag case) to 19.478MB for 2557456-byte allocation
    01-21 16:33:47.515: D/dalvikvm(653): GC_CONCURRENT freed <1K, 9% free 19915K/21767K, paused 34ms+7ms, total 116ms
    01-21 16:33:48.225: D/dalvikvm(653): GC_FOR_ALLOC freed 628K, 11% free 19419K/21767K, paused 44ms, total 50ms
    01-21 16:33:48.235: I/dalvikvm-heap(653): Grow heap (frag case) to 20.458MB for 1536016-byte allocation
    01-21 16:33:48.604: D/dalvikvm(653): GC_FOR_ALLOC freed <1K, 11% free 20919K/23303K, paused 47ms, total 47ms
    01-21 16:33:48.730: D/dalvikvm(653): GC_FOR_ALLOC freed 0K, 11% free 20919K/23303K, paused 90ms, total 90ms
    01-21 16:33:48.815: I/dalvikvm-heap(653): Grow heap (frag case) to 26.317MB for 6144016-byte allocation
    01-21 16:33:48.925: D/dalvikvm(653): GC_CONCURRENT freed 0K, 9% free 26919K/29319K, paused 26ms+18ms, total 108ms
    01-21 16:33:50.265: D/gralloc_goldfish(653): Emulator without GPU emulation detected.
    01-21 16:33:55.834: D/dalvikvm(653): GC_FOR_ALLOC freed 1677K, 10% free 26671K/29319K, paused 46ms, total 48ms
    01-21 16:33:57.224: I/Choreographer(653): Skipped 46 frames!  The application may be doing too much work on its main thread.
    01-21 16:33:58.666: D/dalvikvm(653): GC_FOR_ALLOC freed 1711K, 13% free 25621K/29319K, paused 190ms, total 194ms
    01-21 16:33:58.834: D/dalvikvm(653): GC_FOR_ALLOC freed 1K, 8% free 27120K/29319K, paused 43ms, total 44ms
    01-21 16:33:58.894: I/dalvikvm-heap(653): Grow heap (frag case) to 32.374MB for 6144016-byte allocation
    01-21 16:33:59.065: D/dalvikvm(653): GC_CONCURRENT freed 0K, 7% free 33120K/35335K, paused 74ms+21ms, total 178ms
    01-21 16:34:00.355: I/Choreographer(653): Skipped 210 frames!  The application may be doing too much work on its main thread.
    01-21 16:34:06.287: D/dalvikvm(653): GC_FOR_ALLOC freed 1754K, 8% free 32663K/35335K, paused 54ms, total 84ms
    01-21 16:34:06.665: D/dalvikvm(653): GC_FOR_ALLOC freed 14814K, 46% free 19349K/35335K, paused 47ms, total 48ms
    01-21 16:34:06.675: I/dalvikvm-heap(653): Grow heap (frag case) to 24.784MB for 6144016-byte allocation
    01-21 16:34:06.855: D/dalvikvm(653): GC_CONCURRENT freed <1K, 29% free 25348K/35335K, paused 75ms+20ms, total 178ms
    01-21 16:34:07.975: D/dalvikvm(653): GC_FOR_ALLOC freed 1801K, 29% free 25329K/35335K, paused 46ms, total 51ms
    01-21 16:34:08.195: D/AndroidRuntime(653): Shutting down VM
    01-21 16:34:08.195: W/dalvikvm(653): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
    01-21 16:34:08.226: E/AndroidRuntime(653): FATAL EXCEPTION: main
    01-21 16:34:08.226: E/AndroidRuntime(653): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
    01-21 16:34:08.226: E/AndroidRuntime(653): 	at android.view.ViewRootImpl.setView(ViewRootImpl.java:589)
    01-21 16:34:08.226: E/AndroidRuntime(653): 	at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:326)
    01-21 16:34:08.226: E/AndroidRuntime(653): 	at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224)
    01-21 16:34:08.226: E/AndroidRuntime(653): 	at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149)
    01-21 16:34:08.226: E/AndroidRuntime(653): 	at android.app.Dialog.show(Dialog.java:277)
    01-21 16:34:08.226: E/AndroidRuntime(653): 	at com.example.legendsofkings.City.Menu_Main(City.java:109)
    01-21 16:34:08.226: E/AndroidRuntime(653): 	at com.example.legendsofkings.City$3.onClick(City.java:74)
    01-21 16:34:08.226: E/AndroidRuntime(653): 	at android.view.View.performClick(View.java:4084)
    01-21 16:34:08.226: E/AndroidRuntime(653): 	at android.view.View$PerformClick.run(View.java:16966)
    01-21 16:34:08.226: E/AndroidRuntime(653): 	at android.os.Handler.handleCallback(Handler.java:615)
    01-21 16:34:08.226: E/AndroidRuntime(653): 	at android.os.Handler.dispatchMessage(Handler.java:92)
    01-21 16:34:08.226: E/AndroidRuntime(653): 	at android.os.Looper.loop(Looper.java:137)
    01-21 16:34:08.226: E/AndroidRuntime(653): 	at android.app.ActivityThread.main(ActivityThread.java:4745)
    01-21 16:34:08.226: E/AndroidRuntime(653): 	at java.lang.reflect.Method.invokeNative(Native Method)
    01-21 16:34:08.226: E/AndroidRuntime(653): 	at java.lang.reflect.Method.invoke(Method.java:511)
    01-21 16:34:08.226: E/AndroidRuntime(653): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
    01-21 16:34:08.226: E/AndroidRuntime(653): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    01-21 16:34:08.226: E/AndroidRuntime(653): 	at dalvik.system.NativeStart.main(Native Method)
    et voici ma premiere activitée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    package com.projet.jeu;
     
    import com.projet.jeu.R.id;
     
    import android.media.MediaPlayer;
    import android.os.Bundle;
    import android.text.Editable;
    import android.text.TextWatcher;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.View.OnTouchListener;
    import android.view.animation.Animation;
    import android.view.animation.Animation.AnimationListener;
    import android.view.animation.AnimationUtils;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ImageButton;
    import android.widget.ImageView;
    import android.widget.RelativeLayout;
    import android.widget.ScrollView;
    import android.widget.TextView;
    import android.app.Activity;
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.graphics.Typeface;
     
     
    public class Welcome extends Activity {
    	//les variables initiale a sauvegarder	
    	boolean newGame =true;
    	String playerName ="";
    	String playerPassword="";
    	String playerEmail="";
    	//les variables helper
    	boolean playerNameOk = false;
    	boolean passwordOk = false;
    	boolean emailOk = false;
    	String checkPass1;
    	String checkPass2;
    	//les widget
    	TextView textWelcome;
    	TextView textPlayerName;
    	Button buttonPlay;
    	Button buttonQuit;
    	Button buttonReset;
    	ImageView imageNews;
    	TextView textPlayerNameInfo;
    	EditText editPlayerName;
    	TextView textPasswordInfo;
    	EditText editPassword1;
    	EditText editPassword2; 
    	TextView textEmailInfo;
    	EditText editEmail;
    	Button buttonNext;
    	ScrollView scrollStory;
    	TextView textStory;
    	ImageButton buttonNext2;
    	//les vues
    	View viewMenuBackground;
    	View viewWelcome;
    	View viewNewProfil;
    	View viewNewStory;
    	RelativeLayout layoutNews;
    	RelativeLayout layoutWelcomeBackground;
    	//Les composantes
    	MediaPlayer mPlayer = null;	
    	//Les Threads
    	Thread autoScrollThread;
    	//Les Animations
    	Animation animationHideNews;
     
    	@Override
    	public void onCreate(Bundle savedInstanceState)  {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.welcome);
    		layoutWelcomeBackground = (RelativeLayout)findViewById(R.id.LayoutWelcomeBackground);
    		LoadPlayer();
    		setWelcome();
     
    	}
     
    	public void LoadPlayer(){
     
    		SharedPreferences playerSettings = getSharedPreferences("PlayerSetting", 0);
    		newGame = playerSettings.getBoolean("NewGame", newGame);
    		playerName = playerSettings.getString("PlayerName", playerName);
     
    	}
     
    	public void setWelcome (){
     
    		viewWelcome = getLayoutInflater().inflate(R.layout.welcome_contenant, layoutWelcomeBackground,false);
    		layoutWelcomeBackground.addView(viewWelcome);
     
    		layoutNews = (RelativeLayout)findViewById(id.LayoutNews);
     
    		textWelcome = (TextView)findViewById(id.textWelcome);
    		textWelcome.setText(getString(R.string.textWelcomeBack) + " " + playerName);
     
    		textPlayerName = (TextView)findViewById(id.textPlayerName);
    		textPlayerName.setText(playerName);
     
    		buttonPlay = (Button)findViewById(id.buttonPlay);
    		if (newGame == true){buttonPlay.setText(R.string.textButtonPlay_new); }
    		if (newGame == false){buttonPlay.setText(R.string.textButtonPlay_play); }
    		buttonPlay.setOnTouchListener(new OnTouchListener(){
     
    			@Override
    			public boolean onTouch(View view, MotionEvent arg1) {
    				buttonPlay.setBackgroundResource(R.drawable.button_intro_down);
     
    				return false;
    			}
     
    		});
    		buttonPlay.setOnClickListener(new OnClickListener(){
     
    			@Override
    			public void onClick(View arg0) {
    				animationHideNews = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.hide_news);
    				layoutNews.startAnimation(animationHideNews);
    				animationHideNews.setAnimationListener(new AnimationListener(){
     
    					@Override
    					public void onAnimationEnd(Animation arg0) {
    						if (newGame){
    							layoutWelcomeBackground.removeView(viewWelcome);
    							NewProfile();
    						}
    						if (!newGame){
    							Intent intentCity = new Intent(Welcome.this, City.class);
    							startActivity(intentCity);
    							finish();
    						}
    					}
     
    					@Override
    					public void onAnimationRepeat(Animation arg0) {
    					}
     
    					@Override
    					public void onAnimationStart(Animation arg0) {
     
    					}
    				});
     
     
    			}
    		});
     
    		buttonQuit = (Button)findViewById(id.buttonQuit);
    		buttonQuit.setOnClickListener(new OnClickListener(){
     
    			@Override
    			public void onClick(View v) {
    				finish();
     
    			}
     
    		});
     
    		buttonReset = (Button)findViewById(id.buttonReset);
    		buttonReset.setOnClickListener(new OnClickListener(){
     
    			@Override
    			public void onClick(View v) {
    				newGame = true;
    				playerName = "New Player";
    				textWelcome.setText(getString(R.string.textWelcomeBack) + " " + playerName);
    				textPlayerName.setText(playerName);
    				buttonPlay.setText(R.string.textButtonPlay_new);
    				SavePlayer();
    				LoadPlayer();
    			}
     
     
    		});
     
    	}
     
    	public void NewProfile (){
    		viewMenuBackground = getLayoutInflater().inflate(R.layout.menu_background, layoutWelcomeBackground,false);
    		layoutWelcomeBackground.addView(viewMenuBackground);
     
    		viewNewProfil = getLayoutInflater().inflate(R.layout.new_profile, layoutWelcomeBackground,false);
    		layoutWelcomeBackground.addView(viewNewProfil);
     
    		playSound(R.raw.guerre_amb);
     
    		Typeface font = Typeface.createFromAsset(this.getAssets(), "fonts/Fairland.ttf");
    		TextView textMenuTitle = (TextView)findViewById(id.textNewProfilTitle);
    		textMenuTitle.setTypeface(font);
     
    		textPlayerNameInfo = (TextView)findViewById(id.textPlayerNameInfo);
    		textPlayerNameInfo.setTextColor(0XFFFF0000); 
     
    		textPasswordInfo = (TextView)findViewById(id.textPasswordInfo);
    		textPasswordInfo.setTextColor(0XFFFF0000);
     
    		textEmailInfo = (TextView)findViewById(id.textEmailInfo);
    		textEmailInfo.setTextColor(0XFFFF0000); 
     
    		editPlayerName = (EditText)findViewById(id.editPlayerName);
    		editPlayerName.addTextChangedListener(new TextWatcher(){
    			@Override
    			public void afterTextChanged(Editable arg0) {
     
    			}
     
    			@Override
    			public void beforeTextChanged(CharSequence arg0, int arg1,
    					int arg2, int arg3) {
     
    			}
     
    			@Override
    			public void onTextChanged(CharSequence arg0, int arg1, int arg2,
    					int arg3) {
    				playerName = String.valueOf(editPlayerName.getText());
     
    				textPlayerNameInfo.setTextColor(0XFF00FF00);
    				textPlayerNameInfo.setText(R.string.textPlayerInfo_Ok);
    				playerNameOk = true;
    				if (playerNameOk && passwordOk && emailOk ){
    					buttonNext.setEnabled(true);
    				}
    			}
     
    		});	
     
     
    		editPassword1 = (EditText)findViewById(id.editPassword);
    		editPassword1.addTextChangedListener(new TextWatcher(){
     
    			@Override
    			public void afterTextChanged(Editable s) {
    				checkPass1 = String.valueOf(editPassword1.getText());
    				checkPass2 = String.valueOf(editPassword2.getText());
     
    				if (checkPass1.equals(checkPass2)) {
    					textPasswordInfo.setTextColor(0XFF00FF00);
    					textPasswordInfo.setText(R.string.textPasswordInfo_Ok);
    					passwordOk = true;
    					}
     
    				else {
    					textPasswordInfo.setTextColor(0XFFFF0000);
    					textPasswordInfo.setText(R.string.textPasswordInfo);
    					passwordOk = false;
     
    				}
     
    				if (playerNameOk && passwordOk && emailOk){
    					buttonNext.setEnabled(true);
    				}
     
    			}
     
    			@Override
    			public void beforeTextChanged(CharSequence s, int start, int count,
    					int after) {
     
    			}
     
    			@Override
    			public void onTextChanged(CharSequence s, int start, int before,
    					int count) {
     
    			}
     
    		});
     
    		editPassword2 = (EditText)findViewById(id.editPassword2);
    		editPassword2.addTextChangedListener(new TextWatcher(){
     
    			@Override
    			public void afterTextChanged(Editable s) {
    				checkPass1 = String.valueOf(editPassword1.getText());
    				checkPass2 = String.valueOf(editPassword2.getText());
     
    				if (checkPass1.equals(checkPass2)) {
    					textPasswordInfo.setTextColor(0XFF00FF00);
    					textPasswordInfo.setText(R.string.textPasswordInfo_Ok);
    					passwordOk = true;
    					}
     
    				else {
    					textPasswordInfo.setTextColor(0XFFFF0000);
    					textPasswordInfo.setText(R.string.textPasswordInfo);
    					passwordOk = false;
     
    				}
     
    				if (playerNameOk && passwordOk && emailOk){
    					buttonNext.setEnabled(true);
    				}
     
    			}
     
    			@Override
    			public void beforeTextChanged(CharSequence s, int start, int count,
    					int after) {
     
    			}
     
    			@Override
    			public void onTextChanged(CharSequence s, int start, int before,
    					int count) {
     
    			}
     
    		});
     
    		editEmail = (EditText)findViewById(id.editEmail);
    		editEmail.addTextChangedListener(new TextWatcher(){
     
    			@Override
    			public void afterTextChanged(Editable s) {
     
    				textEmailInfo.setTextColor(0XFF00FF00);
    				textEmailInfo.setText(R.string.textEmailInfo_OK);
    				emailOk = true;
    				if (playerNameOk && passwordOk && emailOk){
    					buttonNext.setEnabled(true);
    				}
     
    			}
    			@Override
    			public void beforeTextChanged(CharSequence s, int start, int count,	int after) {}
    			@Override
    			public void onTextChanged(CharSequence s, int start, int before,int count) {}
     
    		});
     
    		buttonNext = (Button)findViewById(id.buttonNewProfilNext);
    		buttonNext.setEnabled(false);
    		buttonNext.setOnClickListener(new OnClickListener(){
    			@Override
    			public void onClick(View arg0) {
     
    				if (playerNameOk && passwordOk && emailOk){
    					layoutWelcomeBackground.removeView(viewNewProfil);
    					Save();
    					Story();
     
    				}
     
    				else {
     
    				}
    			}	
    		});
     
    	}
     
    	public void Story (){
    		viewNewStory = getLayoutInflater().inflate(R.layout.new_story, layoutWelcomeBackground,false);
    		layoutWelcomeBackground.addView(viewNewStory);
    		playSound(R.raw.guerre_amb);
     
    		Typeface font = Typeface.createFromAsset(this.getAssets(), "fonts/Fairland.ttf");
     
    		scrollStory = (ScrollView)findViewById(id.Scroll_Story);
    		textStory = (TextView)findViewById(id.Text_Story);
    		buttonNext2 = (ImageButton)findViewById(id.Button_Next);
     
    		textStory.setTypeface(font);
    		scrollStory.setSmoothScrollingEnabled(true);
    		scrollStory.setVerticalScrollBarEnabled(false);
     
     
    		TextAutoScroll();
     
    	}
     
    	public void TextAutoScroll (){
     
    		autoScrollThread = new Thread(new Runnable() {
    			@Override
    			public void run() {
     
    				try {
    					Thread.sleep(4000);
     
    					for (int ScrollPos = 0 ; ScrollPos < textStory.getHeight();++ScrollPos){
    						final int ScrollValue = ScrollPos;
    		    			Thread.sleep(50);
     
    						runOnUiThread(new Runnable() {
    					       @Override
    					       public void run() {
     
    					    	   scrollStory.smoothScrollTo(0, ScrollValue);
    					       }
    					    });
    					}
    				}
    				catch (InterruptedException e) {return;}	
    			}
    		});
     
     
    		autoScrollThread.start();
     
    	}			
     
    	private void playSound(int resId) {
     
    		if(mPlayer != null) {
    			mPlayer.stop();
    			mPlayer.release();
    		}
    		mPlayer = MediaPlayer.create(this, resId);
    		mPlayer.setLooping(true);
    		mPlayer.start();
     
    	}
     
    	public void click_ButtonNext(View view){
    		newGame = false;
    		Save();
    		Intent intentCity = new Intent(Welcome.this, City.class);
    		startActivity(intentCity);
    		finish();
     
        }
     
    	public void Save(){
    		 SharedPreferences playerSettings = getSharedPreferences("PlayerSetting", 0);
    		 SharedPreferences.Editor editor = playerSettings.edit();
    		 editor.putBoolean("NewGame", newGame);
    		 editor.putString("PlayerName", playerName);
    		 editor.putString("PlayerPassword", playerPassword);
    		 editor.putString("PlayerEmail", playerEmail);
    		 editor.commit();
     
    	}
     
    	public void SavePlayer(){
    		 SharedPreferences playerSettings = getSharedPreferences("PlayerSetting", 0);
    		 SharedPreferences.Editor editor = playerSettings.edit();
    		 editor.putBoolean("NewGame", newGame);
    		 editor.putString("PlayerName", playerName);
    		 editor.commit();
    	}
     
    	@Override
    	public void onResume() {
    		super.onResume();
     
    		if(mPlayer != null) {
    		mPlayer.start();
    		}
     
    	}
     
    	@Override
    	public void onStop() {
    		super.onStop();
     
    		if(mPlayer != null) {
    			mPlayer.pause();
    		}
     
    	}
     
    	@Override
    	public void onDestroy() {
    	super.onDestroy();
     
    		if(mPlayer != null) {
    			mPlayer.stop();
    			mPlayer.release();
    			mPlayer = null;
    		}
     
    	}
     
    }
    J'ai toujours cette erreur quand je met minSDK16 : error opening trace file: No such file or directory (2). mais pas quand je met SDK7.

    Mon telephone continue de Détruire et recréé mon activitée chaque fois qu'il se verrouille si l'activitée est visible, la première et la deuxième aussi la.

    Je ne suis pas du genre a abandonné mais il y a toujours un problème ou il deverait pas y en avoir. J'arrive pas a avancer dans mon projet je ne fait que déboguer. Soit que c'est moi qui comprend mal ou ya un sérieux problème avec eclipse. J'ai meme tout efface et recommencer a 0. Désinstaller reinstaller Eclipse et les SDK c'est pareille.

    Merci de m'aider a déchifrer le logCat car je suis vraiment sur le point d'abandonné.

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    De ce que je vois, cette erreur android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application surviendrait car tu tentes d'afficher une vue sur une Activity ou un Fragment qui a été détruit.

    Premier point : convention Java.
    - Les noms des méthodes sont en lowerCamelCase, débutent par une minuscule et une majuscule au début des autres mots. Les classes en UpperCamelCase, les constantes en MAJUSCULE.
    - Pas de _ pour délimiter les mots, sauf pour les constantes.

    Second point :
    J'ai survolé ta classe, et j'ai l'impression que tu utilises une Activity pour faire 4-5 écrans. Tu devrais redécouper une vue = une classe.
    Le code sera beaucoup plus simple, beaucoup plus pratique, beaucoup plus maintenable.

    Ne laisse pas de catch vide. Ca va te jouer des tours assez rapidement, tu auras un problème, tu perdras énormément de temps à découvrir quelle est la cause, puisque tu l'auras masqué.

    Tu as pas mal de code mort ou inutile (un load juste après un save, des blocs vides...).

    Est-ce qu'il y a une limite dans le poids des images?
    Au sens strict, non.
    Au sens large, oui.
    La limite est la mémoire maximum autorisée pour l'application pour le terminal.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2014
    Messages : 39
    Points : 25
    Points
    25
    Par défaut
    Merci énormément Hizzin d'avoir pris le temps de me lire.


    1: "tu tentes d'afficher une vue sur une Activity ou un Fragment qui a été détruit"
    Merci j'ai compris pourquois mes boutton ne fonctionnais plus quand j'ai séparé mes vues en 2 Activités. J'appelais un DialogueBox dans ma deuxième activité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    final Dialog dialogMenuMain = new Dialog(getBaseContext());
    j'ai remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    final Dialog dialogMenuMain = new Dialog(this);
    et ca marche. Merci mille fois, j'espere que c'était la bonne chose a faire.

    2: convention Java
    Je vais corriger ca tout de suite. J'avais compris la convention pour les variables mais je savais pas pour les méthodes.

    3: "j'ai l'impression que tu utilises une Activity pour faire 4-5 écrans"
    C'est que les écrans (Vues) que je crée ne font pas tout l'écran. Ils on tous le même background... je vais essayer de les diviser en 3 Activités tout en gardant le meme background sans le recharger dans la 2e activités. Mais ca veut dire que mon menu qui est assez complex... une douzaine de Vue, je devrais les mettres dans 12 activités??

    4: "Ne laisse pas de catch vide"
    Je n'ai qu'un seul catch et ul n'est pas vide,il a un return non?? Peut etre parce que je l'ai mis sur une ligne car je croyais que c'étais mieux pour reduire l'espace que prend le code.... sinon que devrais-je ajouter dans mon catch??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    catch (InterruptedException e) {return;}
    Dernière petite question... si je met mes menu de l'activité Welcome soit NewProfile et Story dans d'autres activités... comment je fais finish(); pour l'activité Welcome dans un autre activité?? Car apres que le joueur ait completé l'Activité NewProfile et NewStory il passe directement au jeu donc je dois suprimer l'activité Welcome qui affiche le baground.


    Merci encore pour tes explications, j'arrange tout ca. Ca ne fait que 3 sem que j'apprend le java, j'ai hate de le maitriser comme le VisualBasic qui lui ne m'avait pas fait autant bucher.

  4. #4
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Ok pour le 1 & 2.

    Pour le 3, je ne connais pas ton application. Tu sembles être parti sur quelque chose de particulier à priori. Au vu du découpage, il est possible que les Fragment t'intéressent, sinon... composants graphique custom ?

    La division en activité est une mauvaise idée à mon avis. Android part du principe 1 activité <=> 1 vue.

    Pour le 4, j'ai dû confondre avec un autre code. De base, il est préférable de logger l'exception à minima Log.e(TAG, message, e) (où TAG est un tag permettant de retrouver facilement, message est une explication, e est l'exception).
    Ce qu'on entends par "catch vide" en général est "rien", "équivalent à rien" ou "erreur non traitée". Un return seul rentre dans le second cas.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2014
    Messages : 39
    Points : 25
    Points
    25
    Par défaut
    Oui mais

    "il est préférable de logger l'exception à minima Log.e(TAG, message, e)"
    Je ne comprend pas très bien...
    comment savoir le Tag... le Tag de quois au juste...de l'erreur?...
    le message... un message qui va être afficher dans le dialog qui dit cette application va redémarer ou ne repond plus...?
    et je le met ou... ?? j'ai importer Log mais Tag et message?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    catch (InterruptedException e) {
        Log.e(TAG??, "Scroll error", e);
        return;
    }
    *EDIT: je viens de faire le tuto sur comment debuger son application et il ex plique en detait le log.e (TAG, texte, e)... je choisi le nomm de mon tag et le mesage a afficher dans lo logca

    "La division en activité est une mauvaise idée à mon avis"
    Je crois que c'est le solution a un de mes problèmes, le fait que de verouiller le cell quand l'application est visible la détuit et fait qu'au déverrouillage la vue n'est plus dans le même état... elle revient a l'état initiale apres onCreate().

    Je t'explique en détail ce que j'ai fais...

    Dans mon onCreate je charge un vue qui sera mon background. Le fichier xml de la vue ne contient que le code en bas. L'image est assez grande pour avoir une bonne résolution en faisant tout l'écran sur toutes les appareille android.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/LayoutWelcomeBackground"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/background"
        android:gravity="center" >
    </RelativeLayout>
    dans setWelcome()
    Je set la vue du Welcome avec un addView() dans mon layoutWelcomeBackground... Ensuite il y a des bouttons donc le principal. Si newGame est false,donc si le joueur a deja un profil, l'utilisateur vois appuis sur Jouer... et on part l'Activité du jeu et detruit celle la... si il n'a pas deja un profil, newGame = true, c'est incrit nouveau sur le boutton, on efface cette vue mais pas celle du background et on va a newProfile().

    dans mon newProfile()
    on affiche la vue newProfile encore la avec .addView qui fait pas encore tout la page.
    l'utilisateur remplis le profil qui est un test pour l'instant...

    ensuite va a story()
    et il a un bouton qui part la deuxiemeActivité et doit détruire les Activités créé et créé une au Activité.

    ensuite il y le playSound qui part la musique d'ambiance qui joue... , le save, et les méthodes de gestion du cycle...


    Le save() et le load() un apres l'autre dont tu m'a parler, c'étais un test que j'avais oublier car j'avais peur si lapp loadait un sharedPreferences qui n'existe pas encore... mais je viens de réaliser que je load dans mon onCreate()... p-e de la le error opening trace file: No such file or directory (2)

    et j'ai toujours le probleme que quand mon cell se verouille et que mon app est visible... si j'ai la vue newProfile() ou story() de visible quand je deverouille je reviens sur la vue setWelcome()... android détruit mon Activité et repasse directement par onCreate(), dans le fond il fait un cicle de vie complet. Mais pas si j'apuis sur home, la tout se passe bien, l'app s'arrête sur on Stop et repart a onResume.

    J'ai aussi remarqué que quand je re tranfert le programme sur mon cell... le reinstall et appuis sur ouvrir... Mon app s'ouvre normalement... continue de se detuire au verrouillage mais, sauf que quand j'appuis sur home, quand je re clic su mon app... Android recréé l'activité par dessus l'autre... L'activité reviens au début chaque fois mais si j'appuis sur back de mon cell.... surprise!!! Il y a plusieurs activité empilé et l'activité que j'avais céé est en dessous rendu ou elle étais dans la bonne vue. Et si je quitte et repart l'app tout est beau en appuyant sur home.

    Alors...

    1 - Plus d'explication sur Log.e(TAG, message, e)
    Log doit etre le dialogue qui apparait quand il y a une erreur!?
    TAG, ou on retourne apres l'erreur???
    message, un message entre "" qui sera affiché ou qui est pré-déféni?
    *EDIT: Je crois avoir saisis.

    2- Est-il mieux que je divise en 3 Activités pour règler mon probleme au verrouillage si non quoi faire... la j'ai juste 3 vues mais quand je vais en avoir plusieurs comme dans mon menu ou c'est environ 12, je fais en ce moment une recherche pour le fragements.
    *EDIT: De ce que j'ai vu les fragments sont principalement pour placer une vue dans une autre surtout utilisé pour les affichages entre tablette et cell. Mais on peut pas mettre le name du fragment dans une variable... ca me prendrais trop de fichier xml. Peut etre mettre mon menu dans un fragment mais appeller mes pages par des methodes et addView comme j'ai fais.

    3 - Comment faire pour que je load() pas si le sharedPreference existe pas?? et est-ce vraiment un problème
    *EDIT: Effectivement quand je met //devant mon callBack load (); dans on create () et je n'ai plus le message
    error opening trace file: No such file or directory (2)

    4 - Pourquoi quand je part l'app par le bouton Ouvirir apres l'installation, les Activités s'empile.

    5 - Comment faire pour Detruire un Activité a partir d'une autre Activité gere finish().

    6 - J'aimerias géré le bouton Retour appeler par la méthode onBackPressed(). Si je met 2 boutons dans un dialogue avec oui et non... quel code mettre dans non pour canceler le onBackPressed().

    J'espère avoir donner assez de détails.... J'aimerais régler ces petit problèmes avant de continuer car si je part pas sur une base solide mon projet va s'effondrer et vite.

  6. #6
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    A priori, pour le Log, tu as compris

    Citation Envoyé par JackDannyL
    Je crois que c'est le solution a un de mes problèmes, le fait que de verouiller le cell quand l'application est visible la détuit et fait qu'au déverrouillage la vue n'est plus dans le même état... elle revient a l'état initiale apres onCreate().
    Dans ce cas-là, sauvegarde l'état, tout simplement.
    Concernant la mise en veille, elle doit normalement au minimum appeler onPause, et réalise tout le cycle généralement.
    Sur certains terminaux (je pense notamment aux Samsungs avec TouchWiz), rien n'est appelé... c'est magique -_-'

    Citation Envoyé par JackDannyL
    2- Est-il mieux que je divise en 3 Activités pour règler mon probleme au verrouillage si non quoi faire... la j'ai juste 3 vues mais quand je vais en avoir plusieurs comme dans mon menu ou c'est environ 12, je fais en ce moment une recherche pour le fragements.
    *EDIT: De ce que j'ai vu les fragments sont principalement pour placer une vue dans une autre surtout utilisé pour les affichages entre tablette et cell. Mais on peut pas mettre le name du fragment dans une variable... ca me prendrais trop de fichier xml. Peut etre mettre mon menu dans un fragment mais appeller mes pages par des methodes et addView comme j'ai fais.
    On ne me l'avait pas encore sortie celle-là Ô_Ô
    Préfères-tu des classes obèses de plusieurs milliers de lignes ou des classes plus courte découpées selon les besoins et responsabilités ?

    Définis "trop" s'il te plaît

    Les Fragments sont fait pour créer des bouts de vues à réutiliser (ou pas, mais dans ce cas, il y a une perte d'intérêt).
    Dans ton cas, tu as une Activité principale avec 3-5 vues différentes qui changent. De ce que je comprends du contexte, cela me paraît tout à fait adapté => permet une meilleure découpe du code & des responsabilités, donc une maintenance plus facile, une évolutivité plus aisée et une lisibilité accrue.

    Citation Envoyé par JackDannyL
    3 - Comment faire pour que je load() pas si le sharedPreference existe pas?? et est-ce vraiment un problème
    *EDIT: Effectivement quand je met //devant mon callBack load (); dans on create () et je n'ai plus le message
    error opening trace file: No such file or directory (2)
    Non. La trace n'est pas importante ni préoccupante à mon avis.
    Quand tu récupères les valeurs des SharedPreferences, le second paramètre est la valeur à mettre si elle n'existe pas. Je pense que tu devrais lire les diverses documentations associées.

    Citation Envoyé par JackDannyL
    4 - Pourquoi quand je part l'app par le bouton Ouvirir apres l'installation, les Activités s'empile.

    5 - Comment faire pour Detruire un Activité a partir d'une autre Activité gere finish().
    Fait un effort sur le français et les explications s'il te plaît. Cela nous fait perdre du temps à tout les deux (et potentiellement à d'autres bénévoles). Pour ces deux points, je ne comprends pas du tout de quoi tu parles.

    Citation Envoyé par JackDannyL
    6 - J'aimerias géré le bouton Retour appeler par la méthode onBackPressed(). Si je met 2 boutons dans un dialogue avec oui et non... quel code mettre dans non pour canceler le onBackPressed().
    Redéfinis la méthode onBackPressed et fait en sorte qu'elle fasse ce que tu veux... non ?
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2014
    Messages : 39
    Points : 25
    Points
    25
    Par défaut
    Merci encore Hizin d'avoir pris le temps de m'aider.

    Désolé pour mon français je vais y faire attention.


    1: Plus d'explication sur Log.e(TAG, message, e) (Résolu)
    Pour le log.e(Tag, texte, e) c'est super merci...

    2: Est-il mieux que je divise en 3 Activités (Résolu)
    C'est bon pour les Fragments, finalement c'est géniale... tu as raison mieux vaux avoir de petites classes, plus facile a débuger. Je vais classer mes fichiers XML dans des sous répertoires dans layout comme cela même si j'en ai beaucoup je m'y retrouverai facilement.

    3: Comment faire pour que je load() pas si le sharedPreference existe pas?? (Résolu)
    Merci pour cette petite explication... comme tu m'a suggéré j'ai lue davantage sur les sharedPreferences. Je ne savais pas que la deuxième valeur étais pour si le fichier est null. Donc je crois que j'avais une erruer ici...

    newGame = playerSettings.getBoolean("NewGame", newGame);
    devrais être
    newGame = playerSettings.getBoolean("NewGame", true);

    et j'ai compris pourquoi le 0... qui veut dire ModePrivée
    SharedPreferences playerSettings = getSharedPreferences("PlayerSetting", 0);

    4: Pourquoi quand je part l'app par le bouton Ouvirir apres l'installation, les Activités s'empile. (Ca m'intrigue mais c'est pas bien grave)
    Je crois que tu n'avais pas toute lue en détail javais précisé...
    J'ai aussi remarqué que quand je re tranfert le programme sur mon cell... le reinstall et appuis sur ouvrir... Mon app s'ouvre normalement... continue de se detuire au verrouillage mais, sauf que quand j'appuis sur home, quand je re clic su mon app... Android recréé l'activité par dessus l'autre... L'activité reviens au début chaque fois mais si j'appuis sur back de mon cell.... surprise!!! Il y a plusieurs activité empilé et l'activité que j'avais céé est en dessous rendu ou elle étais dans la bonne vue. Et si je quitte et repart l'app tout est beau en appuyant sur home.

    Fais le test je suis sur que tu aura le même résultat.
    1 - Fait un nouveau HelloWorld.
    2 - Exporte le et transfert le dans le cellulaire.
    3 - Installe le et fais ouvrir après l'installation.
    4 - Ensuite appuis sur home et ouvre le a nouveau.. appuis encore home et ouvre l'ai une 3e fois.
    5 - Appuis sur Retour de ton cellulaire tu verra 3 fois l'application HelloWorld empilé. Il faudra faire 3 fois back pour détruire l'activitée. Mais seulement après l'installation. Une fois détruit ils ne s'empile plus en ré-ouvrant le programme.

    4b- Mon application se détruit quand mon cell se verrouille. (Presque Résolu)
    Je viens enfin de mettre le doigt sur le bobo. Quand je met dans le Manifest...

    android:screenOrientation="landscape"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <activity
                android:name="com..."
                android:label="@string/app_name" 
                android:screenOrientation="landscape"
                android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
    Donc au lieu de mettre dans <activity> j'ai essayer dans <application>, l'activité ne se detruit plus au verrouillage, le pleine écran fonctionne mais pas landscape?? et finalement je crois que le trouble viens de screenOrientation="landscape". Une suggestion?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:screenOrientation="landscape"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
    l'activitée se détruit mais si je l'enlève tout est beau... comment ca et quoi faire... essaye ce code un nouveau HelloWold
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public class Welcome extends Activity {
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_welcome);
    	}
     
    	public void onPause(){
    		super.onPause();
    		Toast.makeText(this, "Pause", Toast.LENGTH_SHORT).show();
     
    	}
     
    	public void onDestroy(){
    		super.onDestroy();
    		Toast.makeText(this, "Destroy", Toast.LENGTH_SHORT).show();
     
    	}
     
    }
    Tu verra avec le code du manifest, ca passe par destroy et sans le code landscape, l'application arrête sur Pause et passe pas par destroy au verrouillage??!!

    5: Comment faire pour détruire un Activité a partir d'une autre Activité gere finish(). (Besoin de direction svp)
    La je ne sais pas encore... Si j'ai un activité A qui intente un Activité B et que l'Activité B part un Activité C... comment faire pour que l'activité B détruise l'activité A en partant l'activité C?

    6: géré le bouton Retour appeler par la méthode onBackPressed() (Pas eu le temp de tester)
    Je croyais que cette méthode appelais finish() automatiquement après avoir effectuer son contenu?!


    C'est presque Résolu mais je dois pouvoir être en plein écran et en landscape et que l'or du verrouillage du cellulaire et que l'activitée est visible qu'elle ne se détruise pas.
    Merci encore pour ton temps.

  8. #8
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par JackDannyL Voir le message
    Je vais classer mes fichiers XML dans des sous répertoires dans layout comme cela même si j'en ai beaucoup je m'y retrouverai facilement.
    Non cela ne marche pas. Tous les layouts doivent se trouver dans /layouts (il peut exister plein d'autres dossiers de layouts en fonction de l'orientation, de la taille de l'écran...).

    4: Pourquoi quand je part l'app par le bouton Ouvirir apres l'installation, les Activités s'empile. (Ca m'intrigue mais c'est pas bien grave)
    Je crois que tu n'avais pas toute lue en détail javais précisé...
    [I]J'ai aussi remarqué que quand je re tranfert le programme sur mon cell... le reinstall et appuis sur ouvrir... Mon app s'ouvre normalement... continue de se detuire au verrouillage mais, sauf que quand j'appuis sur home, quand je re clic su mon app... Android recréé l'activité par dessus l'autre... L'activité reviens au début chaque fois mais si j'appuis sur back de mon cell.... surprise!!! Il y a plusieurs activité empilé et l'activité que j'avais céé est en dessous rendu ou elle étais dans la bonne vue. Et si je quitte et repart l'app tout est beau en appuyant sur home.
    Doit manquer le flag "SINGLE_ON_TOP" ou un truc du genre dans la déclaration de l'activité (dans le manifest).


    6: géré le bouton Retour appeler par la méthode onBackPressed() (Pas eu le temp de tester)
    Je croyais que cette méthode appelais finish() automatiquement après avoir effectuer son contenu?!
    Moi je crois surtout que je désinstalle assez vite les applications qui me laissent pas faire "back" (et demande "oui" ? "non" ? mais miel quoi ! JE VIENS D'APPUYER SUR BACK... bien sur que c'est oui, et si l'application est bien faite quand on revient dessus, rien n'a changé quand on fait back ! ).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2014
    Messages : 39
    Points : 25
    Points
    25
    Par défaut
    Effectivement cela ne marche pas mettre des sous répertoire dans layout pour classer... ce n'est pas bien grave.

    Pour ce qui est du pourquoi quand je part l'app par le bouton Ouvirir après l'installation, les Activités s'empile. Je crois plus tôt que c'est un petit bug car si après l'installation je ne fais pas ouvrir, mais ouvre l'application a partir de son icone dans me Applis cela ne fait pas ça .

    Pour ce qui est du bouton retour. C'est vrai pour une petite application mais quand tu fais retour pour 2-3 menu, si l'utilisateur fais retour une fois de trop je ne veux pas qu'il sorte du jeu... à moins que ce soit ce qu'il veux, d'ou l'importance du Dialog Quitter oui,non. Mais ta réflexion concernant ce sujet est quand même a prendre en considération.

    Merci nicroman

  10. #10
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    1 - Fait un nouveau HelloWorld.
    2 - Exporte le et transfert le dans le cellulaire.
    3 - Installe le et fais ouvrir après l'installation.
    4 - Ensuite appuis sur home et ouvre le a nouveau.. appuis encore home et ouvre l'ai une 3e fois.
    5 - Appuis sur Retour de ton cellulaire tu verra 3 fois l'application HelloWorld empilé. Il faudra faire 3 fois back pour détruire l'activitée. Mais seulement après l'installation. Une fois détruit ils ne s'empile plus en ré-ouvrant le programme.
    Je n'ai pas ce comportement.
    De plus, ta cinématique est pour le moins bizarre. Les points 1-3 sont faisables en un via adb install monApk.apk.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2014
    Messages : 39
    Points : 25
    Points
    25
    Par défaut
    Apres plusieurs jours meme une semaine a chercher mon bug de destruction de mon activité l'ors du verrouillage... j'ai trouver que ca venait de mon screenOrientation landscape dans le manifest. J''en suis venu a la conclusion que lors du verrouillage et que mon activité est visible il perd sa propriete landscape avant de se mettre sur on stop mais ce n'est pas le cas en appuyant sur home. Alors je n'aurai vraiment pas le choix de créé et sauvegarder une variables pour revenir au meme point apres un destroy. Comme lorsque l'ors d'un changement d'orientation.

    Merci tout le monde j'ai presque tout resolu et merci pour vos pistes. J'ai beaucoup apris grace aux fragments, et sur les context et surtout sur la facon d'ont android reagit. Sur le logcat et les sharedpreferences.

    Ce site est génial.

    C'est dommage que tu naie pas le meme resultat Hizin à propos des activités qui s' empile. Peut etre que ce n'est que mon terminal qui agis ainsi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Petite question sur la gestion des exception
    Par Wizard50 dans le forum C#
    Réponses: 1
    Dernier message: 05/05/2010, 09h17
  2. question sur la gestion des css
    Par boustor dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 31/07/2006, 16h57
  3. Question sur la gestion de l'affichage en VBA
    Par papilou86 dans le forum Access
    Réponses: 5
    Dernier message: 29/05/2006, 10h26
  4. Quelques questions sur la gestion des droits
    Par sylsau dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 04/03/2006, 14h11
  5. Question sur la gestion des fenetres MDI
    Par RémiONERA dans le forum C++Builder
    Réponses: 6
    Dernier message: 06/07/2005, 07h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo