应用程序崩溃。为啥?

Posted

技术标签:

【中文标题】应用程序崩溃。为啥?【英文标题】:App crashing. Why?应用程序崩溃。为什么? 【发布时间】:2018-04-03 23:24:34 【问题描述】:

我正在制作一个 Pizza 空闲点击游戏,当我尝试从商店购买东西时它一直在崩溃,我认为我的应用程序可能会因为这段代码而崩溃:

public void shopPPC (View view) 
    if(pizza >= shopPPC)
        pizza -= shopPPC;
        ppc *= 2;

        shopPPC  *= 1.5;

        sauceBtn.setText("Sauce (1x PPC) Price: "  + shopPPC);
        ppsAndppcView.setText(pps + " PPS |"+ ppc + " PPC");
        pizzaView.setText(pizza + " Pizzas");

        savePrefs(shopPPCKeyString, shopPPC);
        savePrefs(ppcKeyString, ppc);
        savePrefs(pizzaKeyString, pizza);

    

    else
        Toast.makeText(this, "You need more pizzas", Toast.LENGTH_SHORT).show();

    

它说“ShopPPC 从未使用过”,每当我点击应用程序上的按钮时,它就会崩溃。我能做些什么来解决这个问题?我忽略了什么吗?我是制作应用程序和 android studio 的新手,不胜感激。

这是我在 Android 监视器中看到的:

10-23 11:57:49.192 4154-4154/com.example.mariu.pizzaclicker E/AndroidRuntime: FATAL EXCEPTION: main
                                                                              Process: com.example.mariu.pizzaclicker, PID: 4154
                                                                              java.lang.IllegalStateException: Could not find method sauceBtn(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'sauceBtn'
                                                                                  at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327)
                                                                                  at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284)
                                                                                  at android.view.View.performClick(View.java:5610)
                                                                                  at android.view.View$PerformClick.run(View.java:22265)
                                                                                  at android.os.Handler.handleCallback(Handler.java:751)
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                  at android.os.Looper.loop(Looper.java:154)
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:6077)
                                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)

这是我的按钮被初始化的地方。

 public void initialize()

    pizzaView = (TextView) findViewById(R.id.pizzaView);
        pizzaView.setText(pizza + " Pizzas");

    ppsAndppcView = (TextView) findViewById(R.id.ppsAndppcView);
        ppsAndppcView.setText(pps + " PPS |"+ ppc + " PPC");

    pizzaBtn = (ImageButton) findViewById(R.id.pizzaBtn);

    sauceBtn = (Button) findViewById(R.id.sauceBtn);
        sauceBtn.setText("Sauce (1x PPC) Price: "  + shopPPC);

    cheeseBtn = (Button) findViewById(R.id.cheeseBtn);
        cheeseBtn.setText("Cheese (1x PPS) Price: "  + shopPPS);

【问题讨论】:

仔细阅读异常信息:java.lang.IllegalStateException: Could not find method sauceBtn(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'sauceBtn' 在您初始化按钮的位置显示您的 MainActivity 代码 public void initialize() sauceBtn = (Button) findViewById(R.id.sauceBtn); sauceBtn.setText("酱料 (1x PPC) 价格:" + shopPPC); 你是说这个吧? 【参考方案1】:

它找不到与您的按钮对应的方法,也许您更改了按钮或将其删除并重新制作...从头开始编写,这次要小心按钮及其方法,不要有任何冲突! 附言。也许您的清单文件丢失了一些东西......应用程序崩溃有时也是从那里开始的!

【讨论】:

以上是关于应用程序崩溃。为啥?的主要内容,如果未能解决你的问题,请参考以下文章

为啥定位应用程序崩溃

为啥使用 FileTimeToSystemTime() 时程序崩溃了?

为啥这个程序崩溃

为啥这个应用程序在后台崩溃?

为啥我打开应用程序时应用程序崩溃? [关闭]

为啥这个程序会崩溃? [关闭]