参见英文答案 > How to pass an object from one activity to another on Android 31个
我试图将信息(更具体地说是一个有信息的类)从一个活动传递到另一个活动.在我的应用程序中,我有一个启动画面,负责加载和初始化变量.目标是将这些信息提供给实际游戏本身,以便可以使用,但我不知道该怎么做.在我的启动画面类中,我有这个方法,负责在加载所有内容后从启动画面移动到游戏:
private void moveToGame() {
loop.setRunning(false);
act.startActivity(new Intent(splash, MainActivity.class));
act.finish();
return;
}
然后主活动类有这行代码来实际游戏:
setContentView(new Environment(this, this));
Environment类的构造函数是Environment(Context context,Activity act)
目标是将构造器更改为Environment(Context上下文,ActivityAct,LoadInfo li)但是如何将信息一直传递给Environment构造函数?
编辑1 – LoadInfo类
public class LoadInfo {
private HashMap<String, Typeface> fonts;
private HashMap<String, Image> images;
private File logFile;
private File settingsFile;
private File gameDir;
public LoadInfo() {}
public LoadInfo(HashMap<String, Typeface> fonts, HashMap<String, Image> images, File logFile, File settingsFile, File gameDir) {
this.fonts = fonts;
this.images = images;
this.logFile = logFile;
this.settingsFile = settingsFile;
this.gameDir = gameDir;
}
public HashMap<String, Typeface> getFonts() {
return fonts;
}
public HashMap<String, Image> getImages() {
return images;
}
public File getLogFile() {
return logFile;
}
public File getSettingsFile() {
return settingsFile;
}
public File getGameDir() {
return gameDir;
}
public void setFonts(HashMap<String, Typeface> fonts) {
this.fonts = fonts;
}
public void setImages(HashMap<String, Image> images) {
this.images = images;
}
public void setLogFile(File logFile) {
this.logFile = logFile;
}
public void setGameDir(File gameDir) {
this.gameDir = gameDir;
}
public void setSettingsFile(File settingsFile) {
this.settingsFile = settingsFile;
}
public boolean fullyLoaded() {
return fonts != null && images != null && logFile != null && gameDir != null && settingsFile != null;
}
public String toString() {
if(logFile == null)
return "well no file to load";
return logFile.toString();
}
}
解决方法:
您可以将LoadInfo设置为Serializable,如下所示,
public class LoadInfo implements Serializable {
// your code,
}
在你的Splash Activity你可以像这样发送,
//LoadInfo loadInfo = new LoadInfo(); this may be your loadInfo object
Intent intent = new Intent(act, MainActivity.class);
intent.putExtra("load_info", loadInfo); // Add your LoadInfo object here
act.startActivity(intent);
在你的MainActvity中,你可以这样,
LoadInfo loadInfo = (LoadInfo) getIntent().getSerializableExtra("load_info");
setContentView(new Environment(this, this, loadInfo));
标签:java,android 来源: https://codeday.me/bug/20190705/1390755.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。