Je suis développeur d'une application Android. Dans mon application, je crée un téléavertisseur d'image personnalisé en utilisant un adaptateur pager. Ce que je veux, c'est que je veux démarrer l'activité de l'image quand je clique sur l'image actuelle du pager. J'ai donc essayé de démarrer l'activité à l'intérieur de l'adaptateur. Mon téléavertisseur fonctionne correctement sauf l'activité de démarrage. Mais quand je commence l'activité, c'est jeter l'erreur. S'il vous plaît aidez-moi pourquoi? Comment puis-je le réparer?Pourquoi ne peut pas ouvrir l'activité dans l'adaptateur de pager personnalisé dans Android?
Ceci est mon adaptateur téléavertisseur et la façon dont je commence l'activité à l'intérieur
public class ItemImagePager extends PagerAdapter{
Context mContext;
LayoutInflater mLayoutInflater;
ArrayList<String> mResources;
public ItemImagePager(Context context,ArrayList<String> urls) {
mContext = context;
mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mResources = urls;
}
@Override
public int getCount() {
return mResources.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((LinearLayout) object);
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
View itemView = mLayoutInflater.inflate(R.layout.item_image_pager_item, container, false);
ImageView imageView = (ImageView) itemView.findViewById(R.id.image_view_item_image_pager);
Picasso.with(mContext).load(mResources.get(position)).into(imageView);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(mContext, ViewImageActivity.class);
i.putExtra("url",mResources.get(position));
mContext.startActivity(i);
}
});
container.addView(itemView);
return itemView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((LinearLayout) object);
}
}
C'est le logcat quand je commence l'activité cliquant sur l'image
04-10 11:05:37.698 28934-28934/com.blog.waiyanhein.mmfashion.mmfashion W/EGL_genymotion: eglSurfaceAttrib not implemented
04-10 11:05:37.742 28934-28934/com.blog.waiyanhein.mmfashion.mmfashion W/EGL_genymotion: eglSurfaceAttrib not implemented
04-10 11:05:38.938 28934-28934/com.blog.waiyanhein.mmfashion.mmfashion D/AndroidRuntime: Shutting down VM
04-10 11:05:38.938 28934-28934/com.blog.waiyanhein.mmfashion.mmfashion W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xa6184908)
04-10 11:05:38.938 28934-28934/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: FATAL EXCEPTION: main
04-10 11:05:38.938 28934-28934/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
04-10 11:05:38.938 28934-28934/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.app.ContextImpl.startActivity(ContextImpl.java:952)
04-10 11:05:38.938 28934-28934/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.app.ContextImpl.startActivity(ContextImpl.java:939)
04-10 11:05:38.938 28934-28934/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at com.blog.waiyanhein.mmfashion.model.ItemImagePager$1.onClick(ItemImagePager.java:54)
04-10 11:05:38.938 28934-28934/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.view.View.performClick(View.java:4204)
04-10 11:05:38.938 28934-28934/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.view.View$PerformClick.run(View.java:17355)
04-10 11:05:38.938 28934-28934/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:725)
04-10 11:05:38.938 28934-28934/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:92)
04-10 11:05:38.938 28934-28934/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.os.Looper.loop(Looper.java:137)
04-10 11:05:38.938 28934-28934/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5041)
04-10 11:05:38.938 28934-28934/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
04-10 11:05:38.938 28934-28934/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511)
04-10 11:05:38.938 28934-28934/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-10 11:05:38.938 28934-28934/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-10 11:05:38.938 28934-28934/com.blog.waiyanhein.mmfashion.mmfashion E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)
S'il vous plaît aide moi comment puis-je réparer mon code? Merci.
Où avez-vous créé cet adaptateur? dans une activité? –
Oui. Au sein d'une activité, j'ai transmis getBaseContext() au premier paramètre. –
Utilisez l'activité elle-même car le contexte résoudra le problème. ex: MyActivity.this au lieu de getBaseContext() –