2016-07-08 9 views
0

Der Image Slider funktioniert gut, bis ich keine Bilder in das Array geladen. Das heißt:ImageSlider in Android zeigt Fehler

int imageId[]={ 


}; 

Aber sobald ich das tun:

int imageId[]={ 
     R.drawable.mi 

}; 

Lassen Sie uns, dass ich eine Aktivität haben A, die ein Bild hat. Nun, wenn ich lange auf das Bild drücke, sollte eine andere Aktivität B beginnen. Aber die Android-App schließt abrupt.

Hier ist meine Aktivität 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); 
} 

} 
+0

zeigen Sie Ihrem Adapter, wie Sie dieses Array verwenden? –

+0

posted my code ... –

+0

post 'PagerAdapter' Klasse –

Antwort

1

Wechsel:

public Object InstantiateItem(ViewGroup container, int item) { 

zu:

@Override 
public Object instantiateItem(ViewGroup container, int position) { 

in Ihrem Code, und es wird das Problem lösen.

dh, fügen @Override und den Namen der Methode von InstantiateItem

+0

Jetzt gibt es diesen Fehler: 07-08 17: 24: 04,640: E/Android Runtime (11077): Prozess: com.example.hotel_app_regularuser, PID: 11077 07-08 17: 24: 04,640: E/Android Runtime (11077): java.lang.NullPointerException: Der Versuch, virtuelle Methode 'leer android.widget.ImageView.setImageResource (int)' auf einem null-Objekt Verweise aufrufe –

+0

jetzt Ihr 'Image im = (Image) viewitem.findViewById (R.id. imageView1); 'gibt null zurück, überprüfe, ob das Layout' activity_common_preferences.xml' irgendein 'ImageView' mit der ID' imageView1' hat. –

+0

@ Ashish Ranjan Sir, activity_common_preferences muss keine Bildansicht haben, nehme ich an, weil ich diese Aktivität verwende nur um eine andere Aktivität zu nennen..so .. –

0

Fügen Sie einfach @Override Schlüsselwort, wie ich in InstantiateItem() Methode hinzugefügt.

@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; 
} 
+0

Nein, es funktioniert nicht. Es heißt: Die Methode instantiateItem (ViewGroup, int) muss eine Supertype-Methode implementieren oder überschreiben –

+0

whats logs say now? –

+0

Das Programm wird nicht ausgeführt .. Eclipse sagt, dass Ihr Projekt Fehler hat pl fix sie –

0

Ich habe gerade herausgefunden, dass in dieser Zeile instantiateItem ändern:

View viewitem=inflater.inflate(R.layout.activity_page_two,container,false); 

i schrieb:

View `viewitem=inflater.inflate(R.layout.activity_commonpreferences,container,false);` 

Auch as @ Ashish Ranjan wies darauf hin, ich änderte

public Object InstantiateItem(ViewGroup container, int item) { 

zu

@Override 
public Object instantiateItem(ViewGroup container, int position) { 

diese Wechsel half reibungslos meine app laufen.