我的应用程序在启动加载后以“很遗憾,应用程序已停止”对话关闭

时间:2014-04-20 20:10:19

标签: java android savestate

我有一个应用程序,单击图像会使值(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有关,因为它只发生在我尝试实现它们时。

有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

在您的活动完成其创建生命周期之前,您尝试使用prefs实例化getSharedPreferences()字段。此时,您不能指望上下文可以为这些类型的调用做好准备。

您最好将此变量实例化移动到onCreate()方法中。

为了更好地理解这是为什么,我强烈推荐reading about the activity lifecycle

答案 1 :(得分:0)

在setContentView(R.layout.mainlayout)之后放下面的行;方法

 SharedPreferences prefs = getSharedPreferences("LeagueClicker", Context.MODE_PRIVATE);