我有一个MainActivity,我从服务器获取数据,我想使用setter和getter设置数据。我正在使用setter函数来设置Mainactivity中的值。如果我使用MainActivity,则可以正确访问数据。我有另一个java类AlarmReceiver。我想访问MainActiviy中设置的值。但是我在另一堂课中没有得到任何价值。
这是我的MainActivity
JSONArray arr = new JSONArray(strServerResponse);
JSONObject jsonObj = arr.getJSONObject(0);
String DataStatus = jsonObj.getString("status");
System.out.println(DataStatus);
if (DataStatus.equalsIgnoreCase("true")) {
JSONArray arr1 = new JSONArray(strServerResponse);
JSONObject jsonObj1 = arr.getJSONObject(0);
pojo = new Pojo();
empid = jsonObj1.optString("empid");
pojo.setId(empid);
这是AlarmReceiver
@Override
public void onReceive(Context context, Intent intent) {
gps = new GPSTracker(context);
Toast.makeText(context, "I'm running", Toast.LENGTH_SHORT).show();
File root = Environment.getExternalStorageDirectory();
gpxfile = new File(root, "mydata.csv");
startService();
}
private void startService() {
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("dd:MMMM:yyyy HH:mm:ss a");
strDate = sdf.format(c.getTime());
pojo=new Pojo();
String id=pojo.getId();
这些是setter getter
public class Pojo {
public static String empid11;
public void setId(String empid) {
this.empid11 = empid;
Log.e("empidd setter",""+empid);
}
public String getId() {
Log.e("empidd getter",""+empid11);
return empid11;
}
}
但我在AlarmReceiver中获得null值。何以获得这个价值?
答案 0 :(得分:0)
你的pojo是一个新的Pojo。您需要传递保存Id的同一对象。
答案 1 :(得分:0)
id == R.id.action_settings
将值设置为pojo
Pojo pojo =new Pojo(); //global declaration
并在您的 empid = jsonObj1.optString("empid");
pojo.setId(empid);
方法中删除新的Pojo实例,即删除startService()
new Pojo();
答案 2 :(得分:0)
你可以像这样创建你的getter setter:
public void setMethod (String string)
{
this.string= string;
}
// getting the ArrayList value
public static String getMethod()
{
return string;
}
您可以使用yourclassname.getMethod()来使用getmethod名称。
答案 3 :(得分:0)
我不确定AlarmReceiver是如何以及何时执行的。因此,对于解决方案,您可以将MainActivity中的pojo实例设为公共静态,即
public static Pojo pojo = null;
正如您当前所做的那样初始化此实例: -
pojo = new Pojo();
empid = jsonObj1.optString("empid");
pojo.setId(empid);
在AlarmReceiver startService()方法中,您可以将其用作
if (MainActivity.pojo != null){
String id=pojo.getId();
}
在AlarmReceiver类中删除POJO类的所有本地实例/变量。
虽然这种方法不可取。
答案 4 :(得分:0)