Reputation: 41
The image slider works fine until i do not load images in the array. That is:
int imageId[]={
};
But as soon as i do this:
int imageId[]={
R.drawable.mi
};
Let us that I have an activity A which has an image. Now, If i Long press on that image,Another Activity B should start. But the android app closes abruptly.
Here is my Activity code:
package com.example.hotel_app_regularuser;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
public class PageTwo extends Activity {
ViewPager vpager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_page_two);
vpager = (ViewPager) findViewById(R.id.viewPager);
PagerAdapter adapter = new customAdapter(PageTwo.this);
vpager.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.page_two, menu);
return true;
}
}
class customAdapter extends PagerAdapter {
Context context;
int imageId[] = {
R.drawable.mi
};
public customAdapter(Context context) {
this.context = context;
}
public Object InstantiateItem(ViewGroup container, int item) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
View viewitem = inflater.inflate(R.layout.activity_page_two, container, false);
ImageView im = (ImageView) viewitem.findViewById(R.id.imageView1);
im.setImageResource(imageId[item]);
TextView textView1 = (TextView) viewitem.findViewById(R.id.textView1);
textView1.setText("hi");
((ViewPager) container).addView(viewitem);
return viewitem;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return imageId.length;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == ((View) arg1);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
((ViewPager) container).removeView((View) object);
}
}
Upvotes: 0
Views: 82
Reputation: 41
I just found out that in this line:
View viewitem=inflater.inflate(R.layout.activity_page_two,container,false);
i was writing:
View `viewitem=inflater.inflate(R.layout.activity_commonpreferences,container,false);`
Also, as @ Ashish Ranjan pointed out, i changed
public Object InstantiateItem(ViewGroup container, int item) {
to
@Override
public Object instantiateItem(ViewGroup container, int position) {
Changing these helped run my app smoothly.
Upvotes: 0
Reputation: 5543
Change :
public Object InstantiateItem(ViewGroup container, int item) {
to :
@Override
public Object instantiateItem(ViewGroup container, int position) {
in your code and it will solve the problem.
i.e, add @Override
and change the method name to instantiateItem
from InstantiateItem
Upvotes: 1
Reputation: 8149
Just add @Override
key word like i added in InstantiateItem()
method.
@Override
public Object InstantiateItem(ViewGroup container, int item) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
View viewitem = inflater.inflate(R.layout.activity_common_preferences, container, false);
ImageView im = (ImageView) viewitem.findViewById(R.id.imageView1);
im.setImageResource(imageId[item]);
TextView textView1 = (TextView) viewitem.findViewById(R.id.textView1);
textView1.setText("hi");
((ViewPager) container).addView(viewitem);
return viewitem;
}
Upvotes: 0