我有一个应用程序,单击图像会使值(goldCount)增加1.
运行时,应用程序会在启动应用程序之前运行启动。但是,在启动加载后,应用程序关闭,说“#34;不幸的是,应用程序已停止"”,我在LogCat中收到此错误列表 - 请参阅this screenshot。
这是代码:
public class MainClass extends Activity implements OnClickListener {
SharedPreferences prefs = getSharedPreferences("LeagueClicker", Context.MODE_PRIVATE);
public float goldCount = 0.0f;
Button minionClick;
TextView textGoldCount;
String textTotal;
@Override
public void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Set fullscreen
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.mainlayout);
goldCount = prefs.getFloat("goldCount", 0.0f);
//Linking the variables
minionClick = (Button) findViewById(R.id.minioncentreid);
textGoldCount = (TextView) findViewById(R.id.textviewtop);
//String which will display at the top of the app
textTotal = goldCount + " Gold";
//Setting TextView to the String
textGoldCount.setText(textTotal);
textGoldCount.setGravity(Gravity.CENTER);
Typeface tf = Typeface.createFromAsset(getAssets(), "mechanical.ttf");
textGoldCount.setTypeface(tf);
textGoldCount.setTextSize(35);
//Setting onClickListener
minionClick.setClickable(true);
minionClick.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()){
case R.id.minioncentreid:
goldCount += 1.0;
prefs.edit().putFloat("goldCount", goldCount).commit();
textTotal = goldCount + " Gold";
textGoldCount.setText(textTotal);
textGoldCount.setGravity(Gravity.CENTER);
break;
}
}
}
我认为它与SharedPreferences有关,因为它只发生在我尝试实现它们时。
有谁知道如何解决这个问题?
答案 0 :(得分:0)
在您的活动完成其创建生命周期之前,您尝试使用prefs
实例化getSharedPreferences()
字段。此时,您不能指望上下文可以为这些类型的调用做好准备。
您最好将此变量实例化移动到onCreate()
方法中。
为了更好地理解这是为什么,我强烈推荐reading about the activity lifecycle。
答案 1 :(得分:0)
在setContentView(R.layout.mainlayout)之后放下面的行;方法
SharedPreferences prefs = getSharedPreferences("LeagueClicker", Context.MODE_PRIVATE);