从Activity中的另一个类调用方法返回null

时间:2014-01-22 12:43:15

标签: java android

我有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);










}



}

2 个答案:

答案 0 :(得分:2)

在构造函数中,行:

this.context=Ctx;

不执行任何操作,因为Ctxthis.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;
}