无法从其他类GPS_service
访问mainactivity类中声明的字符串变量的值我为m.strtime获取空值.....为什么这是
以下是我的主要活动类
主要活动类别
package com.example.test;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
public class MainActivity extends Activity {
ImageView done;
GPSTracker gps;
long time;
String strtime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
done=(ImageView)findViewById(R.id.done);
done.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
time = System.currentTimeMillis();
strtime = Long.toString(time);
Intent intent = new Intent(MainActivity.this, GPS_service.class);
PendingIntent pintent = PendingIntent.getService(MainActivity.this, 0, intent, 0);
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, time,30000, pintent);
}
});
}
}
以下是我的gps服务类
GPS服务类
package com.example.test;
import android.app.Service;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.IBinder;
import android.widget.Toast;
public class GPS_service extends Service {
GPSTracker gps;
MainActivity m;
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public void onCreate() {
super.onCreate();
Toast.makeText(getApplicationContext(), "Service Created", 1).show();
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(getApplicationContext(), "Service Destroy", 1).show();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(getApplicationContext(), "Service Running ", 1).show();
m=new MainActivity();
gps=new GPSTracker(GPS_service.this);
if(gps.canGetLocation())
{
String message="I am in "+gps.finallocation+"\n\nLocation Link :"+gps.GPSLink+ "\n\nTime
:" +m.strtime;
Toast.makeText(context,message,Toast.LENGTH_LONG).show();
}
else
{
gps.showSettingsAlert();
}
return super.onStartCommand(intent, flags, startId);
}
}
答案 0 :(得分:0)
您不应该实例化活动
就像你在这里做的那样
m=new MainActivity();
为什么你有空?
它简单的Oops概念,您正在创建该MainActivity的新对象,因此所有值都将被初始化;
而不是这样做我想建议将值放在数据库上或使用 SharedPreference 并在服务或活动中访问这些值