Hey everyone, thanks for taking the time time to reply. It really is appreciated!
Implementing my initialization in onCreate() worked, fantastic stuff. Thanks again Mark On 11 March 2011 06:17, Dianne Hackborn <[email protected]> wrote: > Don't implement a constructor and do stuff in it. Implement your > initialization in onCreate(). > > On Thu, Mar 10, 2011 at 6:25 PM, Mark Sharpley <[email protected]>wrote: > >> I was playing around with the galleryview and image switcher, and I >> decided to implement a textview that describes my images as I scroll through >> them. I created a string array, and added a text view in my layout xml. I >> then added the string and textview to my code. I thought I could reuse the >> position int from the images to get the right string from my array. However, >> this addition causes my app to force close when I try to run it. >> >> I have a feeling that I have totally butchered my working java code and >> you may very well cringe at what you are about to see. Apologies. I am >> learning :) >> >> If anyone could help me out, I would be most grateful. I have attached my >> java code, some probably not relevant xml and my logcat. >> >> Regards, >> >> Mark (Java Abuser) >> >> package com.markopolo.test; >> >> import android.app.Activity; >> import android.content.Context; >> import android.content.res.Resources; >> import android.content.res.TypedArray; >> import android.os.Bundle; >> import android.view.View; >> import android.view.ViewGroup; >> import android.view.animation.AnimationUtils; >> import android.widget.AdapterView; >> import android.widget.BaseAdapter; >> import android.widget.Gallery; >> import android.widget.TextView; >> import android.widget.Gallery.LayoutParams; >> import android.widget.ViewSwitcher.ViewFactory; >> import android.widget.ImageSwitcher; >> import android.widget.ImageView; >> import android.widget.AdapterView.OnItemClickListener; >> >> public class MainMenuActivity extends Activity >> implements ViewFactory >> >> { >> //---the images to display-- >> Integer[] imageIDs = { >> R.drawable.swan1, >> R.drawable.swan2, >> R.drawable.swan3, >> R.drawable.swan4, >> R.drawable.swan5, >> R.drawable.swan6 }; >> >> Resources res = getResources(); >> String[] swans = res.getStringArray(R.array.swan); >> >> private ImageSwitcher imageSwitcher; >> >> @Override >> public void onCreate(Bundle savedInstanceState) >> { >> super.onCreate(savedInstanceState); >> setContentView(R.layout.displayview); >> >> imageSwitcher = (ImageSwitcher) findViewById(R.id.switcher1); >> imageSwitcher.setFactory(this); >> imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, >> android.R.anim.fade_in)); >> imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, >> android.R.anim.fade_out)); >> >> Gallery gallery = (Gallery) findViewById(R.id.gallery1); >> gallery.setAdapter(new ImageAdapter(this)); >> gallery.setOnItemClickListener(new OnItemClickListener() >> { >> public void onItemClick(AdapterView parent, >> View v, int position, long id) >> { >> imageSwitcher.setImageResource(imageIDs[position]); >> >> } >> }); >> } >> >> public View makeView() >> { >> ImageView imageView = new ImageView(this); >> imageView.setBackgroundColor(0xFF000000); >> imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); >> imageView.setLayoutParams(new >> ImageSwitcher.LayoutParams( >> LayoutParams.FILL_PARENT, >> LayoutParams.FILL_PARENT)); >> return imageView; >> } >> >> public class ImageAdapter extends BaseAdapter >> { >> private Context context; >> private int itemBackground; >> >> public ImageAdapter(Context c) >> { >> context = c; >> >> //---setting the style--- >> TypedArray a = obtainStyledAttributes(R.styleable.Gallery1); >> itemBackground = a.getResourceId( >> R.styleable.Gallery1_android_galleryItemBackground, >> 0); >> a.recycle(); >> >> } >> >> //---returns the number of images--- >> public int getCount() >> { >> return imageIDs.length; >> } >> >> //---returns the ID of an item--- >> public Object getItem(int position) >> { >> return position; >> } >> >> public long getItemId(int position) >> { >> return position; >> } >> >> >> //---returns an ImageView and TextView view--- >> public View getView(int position, View convertView, ViewGroup >> parent) >> { >> ImageView imageView = new ImageView(context); >> imageView.setImageResource(imageIDs[position]); >> imageView.setScaleType(ImageView.ScaleType.FIT_XY); >> imageView.setLayoutParams(new Gallery.LayoutParams(150, 120)); >> imageView.setBackgroundResource(itemBackground); >> >> TextView textview = (TextView) findViewById(R.id.textview1); >> textview.setText(swans[position]); >> >> return imageView; >> >> } >> } >> } >> >> And arrays.xml: >> >> <?xml version="1.0" encoding="utf-8"?> >> <resources> >> <string-array >> name="swan"> >> <item>swan_1</item> >> <item>swan_2</item> >> <item>swan_3</item> >> <item>swan_4</item> >> <item>swan_5</item> >> <item>swan_6</item> >> <item>swan_7</item> >> </string-array> >> </resources> >> >> My layout xml: >> >> <?xml version="1.0" encoding="utf-8"?> >> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"> >> <ImageSwitcher >> android:id="@+id/switcher1" >> android:layout_width="fill_parent" >> android:layout_height="fill_parent" >> android:layout_alignParentLeft="true" >> android:layout_alignParentRight="true" >> android:layout_alignParentBottom="true" >> /> >> <Gallery >> android:id="@+id/gallery1" >> android:layout_width="fill_parent" >> android:layout_height="wrap_content" >> android:layout_marginTop="20dip" >> /> >> >> <TextView >> android:id="@+id/textview1" >> android:layout_width="wrap_content" >> android:layout_height="wrap_content" >> android:layout_marginBottom="10dip" >> android:layout_gravity="center_horizontal|bottom" >> /> >> </FrameLayout> >> >> And here is my logcat: >> >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): FATAL EXCEPTION: main >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): >> java.lang.RuntimeException: Unable to instantiate activity >> ComponentInfo{com.markopolo.test/com.markopolo.test.MainMenuActivity}: >> java.lang.NullPointerException >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): at >> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): at >> android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): at >> android.app.ActivityThread.access$2300(ActivityThread.java:125) >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): at >> android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): at >> android.os.Handler.dispatchMessage(Handler.java:99) >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): at >> android.os.Looper.loop(Looper.java:123) >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): at >> android.app.ActivityThread.main(ActivityThread.java:4627) >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): at >> java.lang.reflect.Method.invokeNative(Native Method) >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): at >> java.lang.reflect.Method.invoke(Method.java:521) >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): at >> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): at >> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): at >> dalvik.system.NativeStart.main(Native Method) >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): Caused by: >> java.lang.NullPointerException >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): at >> android.content.ContextWrapper.getResources(ContextWrapper.java:80) >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): at >> com.markopolo.test.MainMenuActivity.<init>(MainMenuActivity.java:36) >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): at >> java.lang.Class.newInstanceImpl(Native Method) >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): at >> java.lang.Class.newInstance(Class.java:1429) >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): at >> android.app.Instrumentation.newActivity(Instrumentation.java:1021) >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): at >> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) >> 03-11 02:00:59.288: ERROR/AndroidRuntime(12636): ... 11 more >> >> >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Android Developers" group. >> To post to this group, send email to [email protected] >> To unsubscribe from this group, send email to >> [email protected] >> For more options, visit this group at >> http://groups.google.com/group/android-developers?hl=en > > > > > -- > Dianne Hackborn > Android framework engineer > [email protected] > > Note: please don't send private questions to me, as I don't have time to > provide private support, and so won't reply to such e-mails. All such > questions should be posted on public forums, where I and others can see and > answer them. > > -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

