我无法弄清楚我错在哪里。我为我的一个类(A类)设置了一个监听器,在那里我保存了一些用户信息。
回到主要活动(B类)我实现了第一个类,并初始化了监听器。然后在类BI中创建一个接口的构造函数来完成初始化,这里监听器的值有点可以:“初始化时的监听器的值:com.fideli.MainActivity@425b0500”,但在我想要使用的方法中如下我总是空的,我的应用程序崩溃了。
我哪里错了?谢谢!
A类:
public class GCMActivity {
private final static int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
Context context;
public void setCallback(regidListener rListener) {
this.rListener = rListener;
//here it is ok, it is not null
System.out.println("value of the listeneris on initialisation: " + rListener);
}
public static interface regidListener {
public void onRegIdSaved(String regId);
}
public regidListener rListener;
public GCMActivity(Context context) {
this.context = context;
}
public void registerIfNeeded() {
// here is already null
System.out.println("value of the listeneris: " + this.rListener);
if (rListener != null){
rListener.onRegIdSaved("HEY!!");
}
if (checkPlayServices()) {
gcm = GoogleCloudMessaging.getInstance(context);
regid = getRegistrationId(context);
System.out.println("Class Started!!");
if (regid == null) {
registerInBackground();
}
主要活动,B类:
public class MainActivity extends FragmentActivity implements GCMActivity.regidListener {
...
@Override
protected void onResume() {
super.onResume();
uiHelper.onResume();
if(!isOnline()){
showGpsButton();
}
//initialising listener for regId ready
GCMActivity gcm = new GCMActivity(this);
gcm.setCallback(this);
}
@Override
public void onRegIdSaved(String regId) {
System.out.println("regId ready" + regId);
}
....
答案 0 :(得分:0)
是因为在你的onResume方法中,当onResume返回时,gcm是一个超出范围的局部变量吗?好像你需要把它变成一个类变量,例如mGcm。