I wish I had more information about this error but I just don't. I have a tool called BugSense(Now it is Splunk MINT) that sends crashes to a remote server and this is all I'm getting:
java.lang.NullPointerException
at android.view.HardwareRenderer$GlRenderer.checkCurrent(HardwareRenderer.java:960)
at android.view.HardwareRenderer$Gl20Renderer.destroyLayers(HardwareRenderer.java:1148)
at android.view.ViewRootImpl.destroyHardwareResources(ViewRootImpl.java:576)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:973)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2448)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4482)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
at dalvik.system.NativeStart.main(Native Method)
The interesting thing is that all of the error instances came from:
BLU DASH 4.0
They are all rooted
They all had Mobile Net turned off
They all had at least 12 running apps
So... what do you think?
has anyone had a NPE in the HardwareRenderer class?
Could it be a 'root' thing (i.e. an issue with the device being rooted)?
Could it be a 'hardware' thing (i.e. an issue with the BLUE DASH 4.0)
The problem is that the code is using an null object.
MyClass class;
class.doStuff(); // Will throw NullPointerException as class is null
MyClass newClass = new MyClass();
newClass.doStuff(); // Will work as newClass is pointing to an object.
As I do not have the offending code, I cannot help further. I would suggest you include the code at (HardwareRenderer.java:960), and the call route from the stack, as this is what is causing the exception.
Related
I have an activity, LookingForGPS, that starts another activity, Run. After starting Run, LookingForGPS doesn't finish, but rather continually updates some TextViews in Run:
Run run = new Run();
if(runHasBeenStarted)run.getAndSetValues(someParameters, this);
To my understanding, this returns the LookingForGPS activity. However, after a while (when the parameters are a certain value) I want to start a new activity, PostRun. The following method is called from the Run instance's getAndSetValues:
private void killEverythingAndProceed(Context context){
Intent finishRun = new Intent(context, PostRun.class);
//putting some extras into the intent
startActivity(finishRun);
}
I then get a NullPointerException at the line of startActivity:
11-17 08:34:33.647 2472-2472/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: lv.rv1g.kj0112.forward, PID: 2472
java.lang.NullPointerException
at android.app.Activity.startActivityForResult(Activity.java:3424)
at android.app.Activity.startActivityForResult(Activity.java:3385)
at android.app.Activity.startActivity(Activity.java:3627)
at android.app.Activity.startActivity(Activity.java:3595)
at lv.rv1g.kj0112.forward.Run.killEverythingAndProceed(Run.java:143)
at lv.rv1g.kj0112.forward.Run.getAndSetValues(Run.java:88)
at lv.rv1g.kj0112.forward.LookingForGPS.onLocationChanged(LookingForGPS.java:100)
at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:279)
at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:208)
at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:224)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
What am I doing horribly wrong? I guess it's my lack of knowledge about object-oriented programming that's causing this. It's not the extras causing it, and the context should be correct as well, as it works for another method from the same instance.
Edit: detailed explanation
The LookingForGPS activity has a LocationManager (not using a service because it has some limitations that are too complicated for me to work around). Each time onLocationChanged is called, the Run activity is instantiated (I check whether it has actually been started first, it gets started by the user independetly of the LocationManager), and the getAndSetValues method inside Run is called, giving a bunch of parameters. getAndSetValues then performs some calculations and updates some TextViews in the Run activity (which all works fine). A calculation is also performed to see whether a certain condition has been met. If it has been, the postRun activity is supposed to be started, which is when I run into the exception above.
Here's the problem:
Run run = new Run();
Looks like Run is an Activity. Never instantiate activities with new - you cannot use activities instantiated such way for anything you'd want to use an activity for. For example, to be used as a Context for startActivity().
Either use an Activity instance that has been set up by the system for you, or use an Intent to launch a new activity instance.
I have an app on Google play. I got a few error reports from the developer page and It's quite hard to figure out the problem.
This is what I have:
java.lang.NullPointerException
at com.seb.example.free.MainActivity$ApplyFilter.onPostExecute(MainActivity.java:828)
at com.seb.example.free.MainActivity$ApplyFilter.onPostExecute(v.java:1)
at android.os.AsyncTask.finish(AsyncTask.java:631)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:153)
at android.app.ActivityThread.main(ActivityThread.java:4987)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
at dalvik.system.NativeStart.main(Native Method)
As you can see I have an asynctask innerclass and the error seems to be in on postexecute.
I have checked my project in eclipse and, as the stacktrace says, the error is on line 828:
(iV.getVisibility() == ImageView.INVISIBLE)
My imageView, iV, is declared as private in MainActivity and I initiate it in oncreate.
I can't reproduce the problem on the three of my phones as i have tested on, so it's quite hard to understand what's causing it.
Anyone who has any ideas? Thanks!
I think that imageview object is becomes null in some where in your code..check whether it initialized or not..and if initialized check where it is used in your project.
It might have been derefferenced in some other place, initialize in onresume and see whether this persists or not.
please check have you initialized iv
try:
if(iv != null)
(iV.getVisibility() == View.INVISIBLE)
else
Log.e("CHECK","iv Null");
if you have not initialized iv then do that first.
I'm having problems getting my app to retain its state when it becomes paused due to switching away from it. I've overloaded the onSaveInstanceState and onRestoreInstanceState methods to save and restore the only object which contains the variables important to my application's state (consisting of a bunch of arrays, arraylists, hashsets, enumerations, and primitives). Unfortunately, switching away from my app causes it to crash with a serialization error. Here is the code I have for saving and restoring the state:
#Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Next line causes error when switching apps, but not when rotating screen
savedInstanceState.putSerializable("board", board);
}
#Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
board = (Board)savedInstanceState.getSerializable("board");
}
As far as I can tell, my only problem is that the Board object I've created is not serializable. However, it implements Serializable and defines its serialVersionUID, so I don't know what more I need to do to make it serializable. Normally that is all that's necessary.
I have two questions:
Is there a better way to save and retrieve instances of objects than the getSerializable method?
What can I do to make my object serialize without throwing a runtime exception?
I find this exception particularly odd because my object seems to serialize without problems when the screen is rotated, but causes an error when the app is switched out. I've included the stack trace below, in case it's relevant. I can also post code from the object in question (Board) if requested. Thanks in advance for any suggestions!
08-05 18:10:32.322 32059-32059/? E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.example.android.Board)
at android.os.Parcel.writeSerializable(Parcel.java:1279)
at android.os.Parcel.writeValue(Parcel.java:1233)
at android.os.Parcel.writeMapInternal(Parcel.java:591)
at android.os.Bundle.writeToParcel(Bundle.java:1627)
at android.os.Parcel.writeBundle(Parcel.java:605)
at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:2252)
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3179)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5226)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.io.NotSerializableException: com.example.android.Square
at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1364)
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
at java.io.ObjectOutputStream.writeNewArray(ObjectOutputStream.java:1205)
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1662)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
at java.io.ObjectOutputStream.writeNewArray(ObjectOutputStream.java:1205)
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1662)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
at android.os.Parcel.writeSerializable(Parcel.java:1274)
... 15 more
As drurenia pointed out in his comment, I needed to add implements Serializable to my Square class, which was one of the members contained in my Board class.
My second problem was caused by circular references in the Square class, since each Square contains a reference to each of its neighbors. It should be solvable by implementing readObject and writeObject inside the Board class. More information on dealing with circular references during serialization can be found in this answer.
I have a crash report from a user which i couldn't recreate same error myself on my test device.
Here is the relevant code :
for(File f : sessionDirectory.listFiles()){
Date lastModDate = new Date(f.lastModified());
/*Line 53*/ Session ss = new Session(lastModDate.toLocaleString() , f.getName()) ;
sessionArrayList.add(ss ) ;
}
and here are the stack traces :
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mydomain/com.mydomain.myActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2787)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803)
at android.app.ActivityThread.access$2300(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2136)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:144)
at android.app.ActivityThread.main(ActivityThread.java:4937)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.mydomain.myActivity.onCreate(myActivity.java:53)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)
I have seen things like that when concerting dates to/from string representations in java (not android) and for a long time didn't have a clue why. I don't remember the exact details, but it had something to do with a conversion method not being thread safe, which was weird, because (if I remember correctly) it happened in a call to a static jdk method.
Try if it still happens when you pull lastModDate.toLocaleString() into a synchronized method and using an instance of DateFormat.
There was already a bug file against this in the jdk when I looked for it, but it was rejected.
(Perhaps toLocaleString uses a DateFormat attached to the current locale which is shared between all threads, and calls a non-threadsafe method.)
However this is just a guess, but since the symptoms are similarly weird, just give it a try.
Stack trace says:
Caused by:
java.lang.NullPointerException at
com.mydomain.myActivity.onCreate(myActivity.java:53)
What is line 53?
sessionDirectory can be null and sessionDirectory.listFiles() can return null - also got reminded of that by a user crash report :-)
I have been slowing learning and building my first android app. I'm VERY new to java but have already done a couple of projects in C#, VB.NET (back in the day), Objective-C (have 6 apps in the store) and Fortran (waaaaaaaaaaaaaaaaaaaay back in the day ;)
So I just received from overseas a htc legend (I'm not in the US), which i bought in order to have a decent mid-level device for development (it's running non-rooted adnroid 2.1)
The application I have been developing is target level 4 (android 1.6). It uses a 5 Mb sqlite3 database with a .mp3 extension to avoid compression within the apk and proper copying from assets to system folder.
It all works fine on the emulator, and on the device I see that the file size of the app after copying the database matches exactly what I see on the emulator.
now, on my main activity with a list view and a spinner, I bind some data through two array adapters. when running on the device all does smoothly. but when trying to run on the device this part of the code:
public class mainAct extends Activity implements OnItemSelectedListener, TextWatcher, OnItemClickListener
{
/** members */
//private EditText searchtext;
private ListView designations;
private ArrayAdapter<String> adapterShapes;
private ArrayAdapter<String> adapterTypes;
private Spinner types;
.
.
.
public void onCreate(Bundle savedInstanceState)
{
.
.
.
// DESIGNATIONS
//
adapterShapes = new ArrayAdapter<String>(this,R.layout.list_item,shapes); // custom TextView Adapter
designations=(ListView)findViewById(R.id.designations);
Log.e("MAIN.ACCT", "ok to 172");
designations.setAdapter(adapterShapes);
Log.e("MAIN.ACCT", "ok to 174");
designations.setOnItemClickListener(this);
// TYPES
//
adapterTypes=new ArrayAdapter<String>(this,R.layout.spinner_item,DT.get().typesInLibrary);
types=(Spinner)findViewById(R.id.types);
types.setAdapter(adapterTypes);
types.setOnItemSelectedListener(this);
.
.
.
}
}
Both designations.setAdapter(adapterShapes);
& types.setAdapter(adapterTypes);
give me a Null Pointer exception.
I'm using eclipse under mac, the LogCat window throws:
06-25 18:41:37.842:
ERROR/AndroidRuntime(9523): Uncaught
handler: thread main exiting due to
uncaught exception
06-25 18:41:37.891:
ERROR/AndroidRuntime(9523):
java.lang.RuntimeException: Unable to
start activity
ComponentInfo{com.davidhomes.steel/com.davidhomes.steel.mainAct}:
java.lang.NullPointerException
06-25 18:41:37.891:
ERROR/AndroidRuntime(9523): at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2596)
06-25 18:41:37.891:
ERROR/AndroidRuntime(9523): at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2621)
06-25 18:41:37.891:
ERROR/AndroidRuntime(9523): at
android.app.ActivityThread.access$2200(ActivityThread.java:126)
06-25 18:41:37.891:
ERROR/AndroidRuntime(9523): at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1932)
06-25 18:41:37.891:
ERROR/AndroidRuntime(9523): at
android.os.Handler.dispatchMessage(Handler.java:99)
06-25 18:41:37.891:
ERROR/AndroidRuntime(9523): at
android.os.Looper.loop(Looper.java:123)
06-25 18:41:37.891:
ERROR/AndroidRuntime(9523): at
android.app.ActivityThread.main(ActivityThread.java:4595)
06-25 18:41:37.891:
ERROR/AndroidRuntime(9523): at
java.lang.reflect.Method.invokeNative(Native
Method)
06-25 18:41:37.891:
ERROR/AndroidRuntime(9523): at
java.lang.reflect.Method.invoke(Method.java:521)
06-25 18:41:37.891:
ERROR/AndroidRuntime(9523): at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
06-25 18:41:37.891:
ERROR/AndroidRuntime(9523): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-25 18:41:37.891:
ERROR/AndroidRuntime(9523): at
dalvik.system.NativeStart.main(Native
Method)
06-25 18:41:37.891:
ERROR/AndroidRuntime(9523): Caused by:
java.lang.NullPointerException
-------------------------------------------------------------- 06-25 18:41:37.891:
ERROR/AndroidRuntime(9523): at
com.davidhomes.steel.mainAct.onCreate(mainAct.java:183)
--------------------------------------------------------------
06-25 18:41:37.891:
ERROR/AndroidRuntime(9523): at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-25 18:41:37.891:
ERROR/AndroidRuntime(9523): at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2544)
06-25 18:41:37.891:
ERROR/AndroidRuntime(9523): ... 11
more
06-25 18:46:38.252:
ERROR/ActivityManager(99): fail to set
top app changed!
Line 183 is the first setAdapter call (designations.setAdapter(adapterShapes);), when I comment it out the second setAdapter is the one breaking code
I'm a little lost here, the adapters show the proper number of items on the log window when running from the simulator and the device.
I admit to being a noob to both java and android, so any help is highly appreciated.
regards
david
Well, as you've probably figured out yourself, some variable is null. Unfortunately, there is no obvious source of the NullPointerException in your code.
Therefore, you should first try to identify what variable is null, and hence causing the exception.
For example, findViewById returns null if it cannot find the view, so you may want to double check your ListView and Spinner are being initialised properly.
Of course, the problem may be with your ArrayAdapters, so you should also check them, but from your question it sounds as if you've already done that.
Once you (and we) know exactly where the NullPointerException is occurring, it will be easier to give more specific advice
Oops! it was my fault all along, somehow I had TWO layouts (one for different resolutions), the one being used on my device did not have the proper ListView and Spinner ID. That alternative layout was collapse into a folder and I just forgot about it (I had paused development of the app for about 2 month until I actually got a device to test on).
the one working fine was installing on the simulator but not on the device and vice-versa, weird as the good one matches the resolution of my device (I'm pretty sure I'm also missing something there but that's not important right now)
Still, thanks Chris for pointing me to looking at the Null return value on findViewById. Being new to android I was lost as to were to begin
Best regards
david
I know this is a long closed subject. However I just came across the same problem and this post did not answer it.
What i did, was very silly. I forgot to add a reference to the xml. ie. setContentView(R.layout.settings);
it actually looks like the original post might have also forgotten this so i thought I would just post it.
Cheers.
I had the same problem. I put Log.d messages in printing out every object. It turned out that my ListView object was "null". The reason for this was I had the wrong XML activity listed in my SetContentView. I think the easiest way to debug this problem is keep putting in Log.d messages until you find the object/variable that is "null".