Ganesh R
Ganesh R

Reputation: 61

Location network service

I am developing an app to display all details on network provider, but I got errors can anyone help me to clear it?

logcat-file:

D/AndroidRuntime(308): Shutting down VMW/dalvikvm(308):threadid=1: thread exiting with  
uncaughtexception(group=0x4001d800)
E/AndroidRuntime(308): FATAL EXCEPTION: main
E/AndroidRuntime(308): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.LocationTest/com.LocationTest.LocationTestActivity}: 
java.lang.NullPointerException
E/AndroidRuntime(308):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
E/AndroidRuntime(308):at 
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
E/AndroidRuntime(308):at 
android.app.ActivityThread.access$2300(ActivityThread.java:125)
E/AndroidRuntime(308):at 
android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
E/AndroidRuntime(308):at 
android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(308):at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(308)at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime(308):at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(308):at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(308):at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime(308):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime(308):at dalvik.system.NativeStart.main(Native 
Method)
E/AndroidRuntime(308): Caused by: java.lang.NullPointerException
E/AndroidRuntime(308):at android.app.Activity.findViewById(Activity.java:1637)
E/AndroidRuntime(308):at com.LocationTest.LocationTestActivity.
<init>(LocationTestActivity.java:18)
E/AndroidRuntime(308):at java.lang.Class.newInstanceImpl(Native Method)
E/AndroidRuntime(308):at java.lang.Class.newInstance(Class.java:1429)
E/AndroidRuntime(308):at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
E/AndroidRuntime(308):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
E/AndroidRuntime(308):  ... 11 more
I/Process(308): Sending signal. PID: 308 SIG: 9

CODE:

public class LocationTestActivity extends Activity implements LocationListener {
/** Called when the activity is first created. */
 LocationManager locman;
 String best; Location loc; TextView t=(TextView)findViewById(R.id.text);
 private static final String[] A = { "invalid" , "n/a" , "fine" , "coarse" };
 private static final String[] P = { "invalid" , "n/a" , "low" , "medium" ,
 "high" };
 private static final String[] S = { "out of service" ,
 "temporarily unavailable" , "available" };
 @Override
 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
   locman =(LocationManager)getSystemService(LOCATION_SERVICE);

    log("location Providers");
    dumpproviders();
    Criteria criteria=new Criteria();
    best=locman.getBestProvider(criteria,true);
    log("BestProviders"+best);
    log("Starting with last known location");
    loc=locman.getLastKnownLocation(best);
    dumpLocation(loc); 

}
protected void OnResume()
{
   super.onPause();
locman.requestLocationUpdates(best, 15000,1,this);
}
 protected void Onpause()
 {
    super.onPause();
    locman.removeUpdates(this);
 }



private void dumpproviders() {
    // TODO Auto-generated method stub
    List<String> providers=locman.getAllProviders();
    for(String provider:providers){
        dumpProvider(provider);
    }
}

private void dumpProvider(String providers) {
    // TODO Auto-generated method stub
    LocationProvider info=locman.getProvider(providers);
    StringBuilder buil=new StringBuilder();
    buil.append("LocationProvier[")
    .append("name=")
    .append(info.getName())
    .append("provider state")
    .append(locman.isProviderEnabled(providers))
    .append(",getAccuracy=" )
    .append(A[info.getAccuracy() + 1])
    .append(",getPowerRequirement=" )
    .append(P[info.getPowerRequirement() + 1])
    .append(",hasMonetaryCost=" )
    .append(info.hasMonetaryCost())
    .append(",requiresCell=" )
    .append(info.requiresCell())
    .append(",requiresNetwork=" )
    .append(info.requiresNetwork())
    .append(",requiresSatellite=" )
    .append(info.requiresSatellite())
    .append(",supportsAltitude=" )
    .append(info.supportsAltitude())
    .append(",supportsBearing=" )
    .append(info.supportsBearing())
    .append(",supportsSpeed=" )
    .append(info.supportsSpeed())
    .append("]" );
    log(buil.toString());
}
private void log(String string) {
    // TODO Auto-generated method stub
    t.append(string+"\n");
}
@Override
public void onLocationChanged(Location arg0) {
    // TODO Auto-generated method stub
    dumpLocation(loc);
}
private void dumpLocation(Location loc) {
    // TODO Auto-generated method stub
    if (loc == null)
        log("\nLocation[unknown]" );
        else
        log("\n" + loc.toString());
}
@Override
public void onProviderDisabled(String arg0) {
    // TODO Auto-generated method stub
    log("\nProvider disabled: " + arg0);
}
@Override
public void onProviderEnabled(String arg0) {
    // TODO Auto-generated method stub
    log("\nProvider enabled: " + arg0);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub
    log("\nProvider status changed: " + provider + ", status="
            + S[status] + ", extras=" + extras);
}

Upvotes: 0

Views: 240

Answers (1)

Sudhaker
Sudhaker

Reputation: 785

you cannot have the below line of code in the class scope.

TextView t=(TextView)findViewById(R.id.text);

findViewByID method returns a valid View object only if that particular View is already displayed on the screen otherwise it will return NULL.

In your case you are trying to access the TextView even before it is visible so you are getting a NullPointerException (check the second Exception raised in your log)

E/AndroidRuntime(308): Caused by: java.lang.NullPointerException
E/AndroidRuntime(308):at android.app.Activity.findViewById(Activity.java:1637)
E/AndroidRuntime(308):at com.LocationTest.LocationTestActivity. (LocationTestActivity.java:18)
E/AndroidRuntime(308):at java.lang.Class.newInstanceImpl(Native Method)
E/AndroidRuntime(308):at java.lang.Class.newInstance(Class.java:1429)
E/AndroidRuntime(308):at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
E/AndroidRuntime(308):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
E/AndroidRuntime(308): ... 11 more I/Process(308): Sending signal. PID: 308 SIG: 9

Add the above line after "setContentView(R.layout.main);" in onCreate() method it should work, such as...

setContentView(R.layout.main);
t = (TextView) findViewByID(R.id.text);

Read the Error log carefully you will get all the required info to debug.

Upvotes: 1

Related Questions