problème changement d'orientation téléphone.
Bonjour,
J'ai ce problème qui je pense est assez courant mais je n'arrive pas à trouver le cas qui me concerne.
J'ai fait une galerie image à partir d'une URL comme source.
J'ai l'erreur suivante lorsque je fais un changement d'orientation de téléphone :
Code:
1 2 3 4 5
|
2021-02-12 13:11:01.475 8184-8184/fr.***.onlinegallery E/AndroidRuntime: FATAL EXCEPTION: main
Process: fr.***.onlinegallery, PID: 8184
java.lang.NullPointerException: Attempt to read from null array
at fr.top.onlinegallery.Adapters.FullSizeAdapter.instantiateItem(FullSizeAdapter.java:57) |
La ligne concernée est :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.full_item, null);
ImageView imageView = (ImageView)v.findViewById(R.id.img);
// if(images != null) {
//Problème ici car au changement d'orientation l'objet String[] images est null !
Glide.with(context).load(images[position]).apply(new RequestOptions().centerInside()).into(imageView);
// }
ViewPager vp = (ViewPager)container;
vp.addView(v,0);
return v;
} |
Problème ici car au changement d'orientation l'objet String[] images est null ! je vous précise le type de ma class qui est :
Code:
1 2
|
public class FullSizeAdapter extends PagerAdapter |
Lors du premier chargement cela fonctionne mais si je change d'orientation j'ai le null pointer.
J'ai vue qu'il fallait passer par une méthode onSaveInstanceState :
Mais je ne vois pas trop comment je dois m'y prendre car ma classe contenant le remplissage du tableau String[]images est celle-ci :
Code:
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
|
package fr.***.onlinegallery.Activities;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import java.io.Serializable;
import java.util.Random;
import fr.***.onlinegallery.Adapters.GalleryImageAdapter;
import fr.***.onlinegallery.Interfaces.IRecyclerViewClickListener;
import fr.***.onlinegallery.R;
public class GalleryActivity extends Activity implements Serializable {
RecyclerView recyclerView;
RecyclerView.LayoutManager layoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView)findViewById(R.id.recyclerview);
layoutManager = new GridLayoutManager(this,2);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(layoutManager);
Random random = new Random();
final String[] images = new String[5];
for(int i=0; i< images.length;i++){
if(i>0)
images[i] = "https://***/"+i+".jpg";//random.nextInt(1000+1);
}
final IRecyclerViewClickListener listener = new IRecyclerViewClickListener() {
@Override
public void onClick(View view, int position) {
// open full screen activity with image clicked
Intent intent = new Intent(getApplicationContext(), FullScreenActivity.class);
intent.putExtra("IMAGES", images);
intent.putExtra("POSITION", position);
GalleryActivity.this.startActivity(intent);
}
};
GalleryImageAdapter galleryImageAdapter = new GalleryImageAdapter(this,images,listener);
recyclerView.setAdapter(galleryImageAdapter);
}
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
outState.putAll(outState);
}
} |
J'aimerais pouvoir récupérer le contenu du tableau String[]images lors de changement d'orientation du téléphone, tout simplement.
Pouvez-vous m'aider svp ? :aie::calim2: