I am trying to run the Android App on my emulator/device.
There is no compile time error , but the app crashes when run on the device/emulator and
"Unfortunately, GridViewMapExample has stopped" message id displayed on the screen.
MainActivity.java
package com.example.gridviewmapexample;
import java.util.ArrayList;
import android.support.v7.app.ActionBarActivity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
public class MainActivity extends ActionBarActivity {
GridView grid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
grid = (GridView) findViewById(R.id.gridView);// step 3
grid.setAdapter(new NikAdapter(this));
}
}
class Country {
String countryName;
int imageId;
Country(String countryName, int imageId) {
this.countryName = countryName;
this.imageId = imageId;
}
}
class NikAdapter extends BaseAdapter {
ArrayList<Country> list;
Context c;
NikAdapter(Context c) {
this.c = c;
list = new ArrayList<Country>();
Resources res = c.getResources();
String[] tempCountryNames = res.getStringArray(R.array.country_names);
int[] countryImages = { R.drawable.germany_flag, R.drawable.india_flag,
R.drawable.italy_flag, R.drawable.norway_flag,
R.drawable.pakistan_flag, R.drawable.saudi_arabia_flag };
for (int i = 0; i < 6; i++) {
Country tempCountry = new Country(tempCountryNames[i],
countryImages[i]);
list.add(tempCountry);
}
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
class ViewHolder {
ImageView myImageView;
ViewHolder(View v) {
myImageView = (ImageView) v.findViewById(R.id.imageView);
}
}
@Override
public View getView(int i, View view, ViewGroup parent) {
View row = view;
ViewHolder holder = null;
if (row == null) {
LayoutInflater inflater = (LayoutInflater) c
.getSystemService(Context.LAUNCHER_APPS_SERVICE);
row = inflater.inflate(R.layout.single_item, parent, false);
holder = new ViewHolder(row);
row.setTag(holder);
} else {
holder = (ViewHolder) row.getTag();
}
Country temp = list.get(i);
holder.myImageView.setImageResource(temp.imageId);
holder.myImageView.setTag(temp);
return row;
}
}
strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">GridViewMapExample</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string-array name="country_names">
<item>Germany</item>
<item>India</item>
<item>Italy</item>
<item>Norway</item>
<item>Pakistan</item>
<item>Saudi Arabia </item>
</string-array>
</resources>
single_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/india_flag" />
</RelativeLayout>
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.gridviewmapexample.MainActivity" >
<GridView
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:columnWidth="120dp"
android:horizontalSpacing="10dp"
android:numColumns="auto_fit"
android:stretchMode="spacingWidthUniform"
android:verticalSpacing="10dp" >
</GridView>
</RelativeLayout>
I'm getting the following stack trace and after searching for quite some time now, I still have no idea what is causing it.
04-26 18:09:01.944: D/ServiceManager(22760): The name of the service is display
04-26 18:09:01.946: D/ServiceManager(22760): The name of the service is dropbox
04-26 18:09:01.949: D/jdwp(22760): sendBufferedRequest : len=0x57
04-26 18:09:01.952: W/asset(22760): AssetManager-->addDefaultAssets CIP path not exsit!
04-26 18:09:01.954: D/ServiceManager(22760): The name of the service is package
04-26 18:09:01.962: D/ServiceManager(22760): The name of the service is connectivity
04-26 18:09:02.031: D/ServiceManager(22760): The name of the service is window
04-26 18:09:02.033: D/ServiceManager(22760): The name of the service is accessibility
04-26 18:09:02.063: D/ServiceManager(22760): The name of the service is theme
04-26 18:09:02.067: W/asset(22760): AssetManager-->addDefaultAssets CIP path not exsit!
04-26 18:09:02.068: D/ThemeManager(22760): contextandroid.app.ContextImpl@41296280
04-26 18:09:02.069: D/ThemeManager(22760): create ThemeManager object
04-26 18:09:02.070: D/ThemeManager(22760): Res_clear()
04-26 18:09:02.107: W/asset(22760): AssetManager-->addDefaultAssets CIP path not exsit!
04-26 18:09:02.138: I/dalvikvm(22760): Could not find method android.view.ViewGroup.onNestedScrollAccepted, referenced from method android.support.v7.internal.widget.ActionBarOverlayLayout.onNestedScrollAccepted
04-26 18:09:02.138: W/dalvikvm(22760): VFY: unable to resolve virtual method 11343: Landroid/view/ViewGroup;.onNestedScrollAccepted (Landroid/view/View;Landroid/view/View;I)V
04-26 18:09:02.138: D/dalvikvm(22760): VFY: replacing opcode 0x6f at 0x0000
04-26 18:09:02.139: I/dalvikvm(22760): Could not find method android.view.ViewGroup.onStopNestedScroll, referenced from method android.support.v7.internal.widget.ActionBarOverlayLayout.onStopNestedScroll
04-26 18:09:02.139: W/dalvikvm(22760): VFY: unable to resolve virtual method 11349: Landroid/view/ViewGroup;.onStopNestedScroll (Landroid/view/View;)V
04-26 18:09:02.140: D/dalvikvm(22760): VFY: replacing opcode 0x6f at 0x0000
04-26 18:09:02.142: I/dalvikvm(22760): Could not find method android.support.v7.internal.widget.ActionBarOverlayLayout.stopNestedScroll, referenced from method android.support.v7.internal.widget.ActionBarOverlayLayout.setHideOnContentScrollEnabled
04-26 18:09:02.143: W/dalvikvm(22760): VFY: unable to resolve virtual method 9037: Landroid/support/v7/internal/widget/ActionBarOverlayLayout;.stopNestedScroll ()V
04-26 18:09:02.143: D/dalvikvm(22760): VFY: replacing opcode 0x6e at 0x000e
04-26 18:09:02.154: I/dalvikvm(22760): Could not find method android.content.res.TypedArray.getChangingConfigurations, referenced from method android.support.v7.internal.widget.TintTypedArray.getChangingConfigurations
04-26 18:09:02.154: W/dalvikvm(22760): VFY: unable to resolve virtual method 365: Landroid/content/res/TypedArray;.getChangingConfigurations ()I
04-26 18:09:02.155: D/dalvikvm(22760): VFY: replacing opcode 0x6e at 0x0002
04-26 18:09:02.157: I/dalvikvm(22760): Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.internal.widget.TintTypedArray.getType
04-26 18:09:02.157: W/dalvikvm(22760): VFY: unable to resolve virtual method 387: Landroid/content/res/TypedArray;.getType (I)I
04-26 18:09:02.157: D/dalvikvm(22760): VFY: replacing opcode 0x6e at 0x0002
04-26 18:09:02.194: D/ThemeManager(22760): Res_clear()
04-26 18:09:02.206: W/asset(22760): AssetManager-->addDefaultAssets CIP path not exsit!
04-26 18:09:02.231: D/AbsListView(22760): checkAbsListViewlLogProperty get invalid command
04-26 18:09:02.245: V/PhoneWindow(22760): DecorView setVisiblity: visibility = 4
04-26 18:09:02.245: D/ServiceManager(22760): The name of the service is input_method
04-26 18:09:02.251: D/ServiceManager(22760): The name of the service is power
04-26 18:09:02.257: V/PhoneWindow(22760): DecorView setVisiblity: visibility = 0
04-26 18:09:02.276: D/GN_FW_TextView(22760): onMeasure,mLayout=android.text.BoringLayout@41312d60
04-26 18:09:02.278: D/AndroidRuntime(22760): Shutting down VM
04-26 18:09:02.279: W/dalvikvm(22760): threadid=1: thread exiting with uncaught exception (group=0x40d249a8)
04-26 18:09:02.295: E/AndroidRuntime(22760): FATAL EXCEPTION: main
04-26 18:09:02.295: E/AndroidRuntime(22760): java.lang.NullPointerException
04-26 18:09:02.295: E/AndroidRuntime(22760): at com.example.gridviewmapexample.NikAdapter.getView(MainActivity.java:98)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.widget.AbsListView.obtainView(AbsListView.java:2207)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.widget.GridView.onMeasure(GridView.java:1040)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.view.View.measure(View.java:15635)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:681)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.view.View.measure(View.java:15635)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.view.View.measure(View.java:15635)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.support.v7.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:453)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.view.View.measure(View.java:15635)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.view.View.measure(View.java:15635)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1411)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.widget.LinearLayout.measureVertical(LinearLayout.java:698)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.view.View.measure(View.java:15635)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4919)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
04-26 18:09:02.295: E/AndroidRuntime(22760): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2200)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.view.View.measure(View.java:15635)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2165)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1249)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1443)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1139)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4872)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:776)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.view.Choreographer.doCallbacks(Choreographer.java:579)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.view.Choreographer.doFrame(Choreographer.java:548)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:762)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.os.Handler.handleCallback(Handler.java:800)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.os.Handler.dispatchMessage(Handler.java:100)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.os.Looper.loop(Looper.java:194)
04-26 18:09:02.295: E/AndroidRuntime(22760): at android.app.ActivityThread.main(ActivityThread.java:5410)
04-26 18:09:02.295: E/AndroidRuntime(22760): at java.lang.reflect.Method.invokeNative(Native Method)
04-26 18:09:02.295: E/AndroidRuntime(22760): at java.lang.reflect.Method.invoke(Method.java:525)
04-26 18:09:02.295: E/AndroidRuntime(22760): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
04-26 18:09:02.295: E/AndroidRuntime(22760): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
04-26 18:09:02.295: E/AndroidRuntime(22760): at dalvik.system.NativeStart.main(Native Method)
04-26 18:09:02.332: I/Process(22760): Sending signal. PID: 22760 SIG: 9
Now that you have posted your stack trace (the rest of the log is not needed, by the way), you should be able to find yourself where your problem occurred.
The stack trace tells you that your NPE (NullPointerException
) occurs in getView()
at line 98 in MainActivity.java
.
I don't know which one line 98 is, but I see a potential problem in getView()
:
LayoutInflater
, but you call getSystemService(Context.LAUNCHER_APPS_SERVICE)
. You might wanna call getSystemService(Context.LAYOUT_INFLATER_SERVICE)
instead.