Android 全局变量不可访问
我已经创建了Project_info类,并在Appfunc.class中创建了它的实例(静态公共Project_info m_Project),该类扩展了应用程序。当我在XMLparserclass中访问这个实例时,它工作正常,但当我在另一个活动中访问同一个实例时,它就不可访问 我的Appfunc类Android 全局变量不可访问,android,Android,我已经创建了Project_info类,并在Appfunc.class中创建了它的实例(静态公共Project_info m_Project),该类扩展了应用程序。当我在XMLparserclass中访问这个实例时,它工作正常,但当我在另一个活动中访问同一个实例时,它就不可访问 我的Appfunc类 public class AppFuncs extends Application { public static Project_info m_Project; public A
public class AppFuncs extends Application
{
public static Project_info m_Project;
public AppFuncs()
{
m_Project=new Project_info();
}
}
我的项目信息类
public class Project_info {
ArrayList<Layer> newlayer=new ArrayList<Layer>();
float m_Xmin;
float m_Ymin;
float m_Xmax;
float m_Ymax;
String m_ExtendBound;
int m_ProjectID;
String m_ProjectName;
String m_Description;
String m_StartDate;
String m_Ownership;
String m_LastModified;
String m_Datum;
String m_Projection;
int m_NoSignificantDecimals;
int m_ZoomCurrent;
int m_RasterHeight;
int m_Background;
}
公共类项目\u信息{
ArrayList newlayer=新的ArrayList();
浮动m_Xmin;
浮动货币;
浮点m_Xmax;
浮动m_Ymax;
字符串m_展开;
int m_投影;
字符串m_ProjectName;
字符串m_描述;
字符串m_起始日期;
字符串m_所有权;
字符串m_LastModified;
串m_基准;
弦m_投影;
整数m_NosificantDecimals;
int m_动物电流;
内特m_光栅高度;
国际大学背景;
}
XMLparser类
public class XMLparser extends Activity {
String OGLpath="/sdcard/OGLDataTest/Feedlot";
File file= new File(OGLpath);
File[] files=file.listFiles();
private String name;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getIntent().getExtras()!=null)
{
if (getIntent().getExtras().containsKey(FileChooser.Gis_path))
{
name=getIntent().getExtras().getString(FileChooser.Gis_path);
}
}
Document doc=null;
try{
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
//doc = dBuilder.parse(assManager.open("e.xml"));
File f= new File(name);
doc = dBuilder.parse((f));
}
catch (Exception e) {
e.printStackTrace();
}
AppFuncs f=(AppFuncs) getApplicationContext();
// Document doc = parser.getDomElement(xml); // getting DOM element
NodeList pjj=doc.getElementsByTagName("ProjectInformation");
NodeList pj=pjj.item(0).getChildNodes();
//NodeList pj=child.item(0).getChildNodes();
for (int p=0;p<pj.getLength();p++)
{
if (pj.item(p).getNodeName().equals("Details"))
{
Element attribute=(Element)pj.item(p);
if(attribute.hasAttribute("ProjectID"))
f.m_Project.m_ProjectID=Integer.parseInt(((Element) pj.item(p)).getAttributes().getNamedItem("ProjectID").getNodeValue());
if(attribute.hasAttribute("ProjectName"))
f.m_Project.m_ProjectName=(((Element) pj.item(p)).getAttributes().getNamedItem("ProjectName").getNodeValue());
if(attribute.hasAttribute("Description"))
f.m_Project.m_Description=(((Element) pj.item(p)).getAttributes().getNamedItem("Description").getNodeValue());
if(attribute.hasAttribute("StartDate"))
f.m_Project.m_StartDate=(((Element) pj.item(p)).getAttributes().getNamedItem("StartDate").getNodeValue());
if(attribute.hasAttribute("OwnerShip"))
f.m_Project.m_Ownership=(((Element) pj.item(p)).getAttributes().getNamedItem("OwnerShip").getNodeValue());
if(attribute.hasAttribute("LastModified"))
f.m_Project.m_LastModified=(((Element) pj.item(p)).getAttributes().getNamedItem("LastModified").getNodeValue());
}
public类XMLparser扩展活动{
字符串OGLpath=“/sdcard/OGLDataTest/Feedlot”;
File File=新文件(OGLpath);
File[]files=File.listFiles();
私有字符串名称;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
if(getIntent().getExtras()!=null)
{
if(getIntent().getExtras().containsKey(FileChooser.Gis_path))
{
name=getIntent().getExtras().getString(FileChooser.Gis_路径);
}
}
单据单据=空;
试一试{
DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
//doc=dBuilder.parse(assManager.open(“e.xml”);
文件f=新文件(名称);
doc=dBuilder.parse((f));
}
捕获(例外e){
e、 printStackTrace();
}
AppFuncs f=(AppFuncs)getApplicationContext();
//Document doc=parser.getDomeElement(xml);//获取DOM元素
NodeList pjj=doc.getElementsByTagName(“项目信息”);
NodeList pj=pjj.item(0.getChildNodes();
//NodeList pj=child.item(0.getChildNodes();
对于(int p=0;p您可以尝试在Project\u info
类中定义公共属性:
public class Project_info {
public ArrayList<Layer> newlayer=new ArrayList<Layer>();
public float m_Xmin;
public float m_Ymin;
public float m_Xmax;
public float m_Ymax;
public String m_ExtendBound;
public int m_ProjectID;
public String m_ProjectName;
public String m_Description;
public String m_StartDate;
public String m_Ownership;
public String m_LastModified;
public String m_Datum;
public String m_Projection;
public int m_NoSignificantDecimals;
public int m_ZoomCurrent;
public int m_RasterHeight;
public int m_Background;
}
公共类项目\u信息{
public ArrayList newlayer=new ArrayList();
公共浮点数m_Xmin;
公共浮动货币m_Ymin;
公共浮点数m_Xmax;
公共浮动m_Ymax;
公共字符串m_扩展绑定;
公共国际项目;
公共字符串m_ProjectName;
公共字符串m_描述;
公共字符串m_StartDate;
公有制;
公共字符串m_LastModified;
公共字符串m_数据;
公共字符串m_投影;
公共整数无意义小数;
公共int m_ZoomCurrent;
公共内塔高度;
公共国际大学背景;
}
试试这个:
public class AppFuncs extends Application
{
public static Project_info m_Project;
public void onCreate() {
super.onCreate();
m_Project=new Project_info();
}
public static Project_info getInstance() {
return m_Project;
}
}
别忘了在清单中添加以下内容:
android:name="package.AppFuncs"