我有2个类,一个是Location,第二个是MainActivity,我想要做的是使用Location Class中的方法获取活动类中的Latitude,下面是Location类:< / p>
public class locac implements LocationListener {
public Context Ctx;
private final Context context;
public locac (Context context) {
this.context=Ctx;
}
public int GetLat() {
LocationManager manag;
manag=(LocationManager)Ctx.getSystemService(Ctx.LOCATION_SERVICE);
Location alfa=manag.getLastKnownLocation(manag.GPS_PROVIDER);
return (int) (alfa.getLatitude());
}
这是MainActivity类的一部分
locac nova=new locac(this.m);
int latitu=nova.GetLat();
Context m;
Toast.makeText(getApplicationContext(), latitu, Toast.LENGTH_LONG).show();
我得到的错误是:
Caused by: java.lang.NullPointerException
at com.example.alarma.locac.GetLat(locac.java:71)
我猜Context返回null,但无法理解为什么
P.S
我正在添加完整的Activity类:
public class MainActivity extends Activity {
public static final String content="test";
public static final Integer kom=2;
Context m;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbadapter mkola=new dbadapter(MainActivity.this);
mkola.openToWrite();
locac nova=new locac(MainActivity.this);
int latitu=nova.GetLat();
Toast.makeText(getApplicationContext(),
latitu, Toast.LENGTH_LONG).show();
mkola.insert(content);
}
}
答案 0 :(得分:2)
在构造函数中,行:
this.context=Ctx;
不执行任何操作,因为Ctx
和this.context
同时引用实例变量,因此在创建对象时是null
(对象的默认值)。
应该是:
private final Context context; //remove this line
public Context Ctx;
public locac (Context context){
this.Ctx = context;
}
另请注意,getLastKnownLocation
也可以返回null
。
P.S:尽量尊重命名惯例。
答案 1 :(得分:0)
我没有看到任何Ctx的初始化。
public Context Ctx;
public locac (Context context){
this.context=Ctx;
}