获取Serializable类中的Activity的上下文

时间:2016-09-21 08:37:48

标签: android android-activity serialization android-context

我有一个实现'Serializable'的类但我无法获取其主要活动的上下文。 这是我的这个类的代码:

public class Game implements Serializable{
private String name;
private ColorTheme theme;
private int distance = 0;
private int score = 0;
boolean boom = false;
protected Context context;

public Game(MainActivity context){
    this.context = context.getApplicationContext();
}

在此之后,我认为我得到了上下文,然后我想要的是当得分大于1时,应用程序应该关闭。

score = (i+1);
if (score >1)
{

}

我想在这种情况下关闭我的游戏,但它没有给我任何选择来完成上下文。我帮我错了。我认为在这个Serializable类中没有成功实现上下文。需要帮助

2 个答案:

答案 0 :(得分:0)

<强> FYI

关闭Game类中的应用程序并不是一个好方法,最好在Activity本身内部进行。 一个很好的解决方案是在Game类中创建一个方法,如下所示:

public boolean shouldCloseApplication(){
  return this.score > 1;
}

并在活动中使用以下内容:

if(game.shouldCloseApplication()){
  //close the application as mentioned below
  this.finishAffinity();
}

说,如果你想关闭应用程序,你只需要调用

this.finishAffinity();

refer to this SO post

因此,不要传递“MainActivity”,而是直接使用“Context”传递

Game game = new Game(MainActivity.this);

并通过

接收
public Game(Context context){
  this.context = context;
}

并将其与

一起使用
if(score > 1)
{
  context.finishAffinity();
}

不建议,但有效

如果这不起作用,请使用

context.getActivity().finish();
System.exit(0);

希望这有帮助

答案 1 :(得分:-1)

试试这个

{{1}}