单击按钮后我的应用程序崩溃[重复]

Posted

技术标签:

【中文标题】单击按钮后我的应用程序崩溃[重复]【英文标题】:My app crashes after a button is clicked [duplicate] 【发布时间】:2018-09-11 21:50:47 【问题描述】:

当我按下应用程序主菜单上的按钮启动新活动时,整个应用程序崩溃,我不太清楚为什么。这是效率活动。这两个文件称为activity_efficiency.xmlEfficiency.java 类。

public void goEfficient(View v)
    if(v.getId()==R.id.efficiencyID)
        Intent goefficient = new Intent(MainActivity.this, Efficiency.class);
        startActivity(goefficient);
    

上面的sn-p,它是从主要活动中调用的。这很好用,我相信它是导致它崩溃的活动的下一部分:

package com.laminar.calculator.calculator;

import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class Efficiency extends AppCompatActivity 

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_efficiency);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);


public void workout(View a)
    EditText EO = (EditText)findViewById(R.id.energyoutput);
    EditText EI = (EditText)findViewById(R.id.energyinput);
    TextView VIEW = (TextView)findViewById(R.id.textView15);

    if(EO.length()==0||EI.length()==0)
        Snackbar.make(a, "Please enter your values into the equation", Snackbar.LENGTH_LONG)
                .setAction("Action", null).show();
    else

        double oe = Double.parseDouble(EO.getText().toString());
        double ei = Double.parseDouble(EI.getText().toString());
        double stage1 = oe / ei;
        double stage2 = stage1 * 100;

        VIEW.setText("Efficiency: "+stage2+"J");
    



然后,这是activity.efficiency.xml 文本:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:orientation="vertical"
tools:context=".Efficiency">

<TextView
    android:id="@+id/textView13"
    android:layout_
    android:layout_
    android:text="Work out the efficiency of an object"
    android:textAppearance="@android:style/TextAppearance.Material.Medium" 
/>

<EditText
    android:id="@+id/energyoutput"
    android:layout_
    android:layout_
    android:ems="10"
    android:hint="Enter useful energy output here (J)"
    android:inputType="number|numberSigned|numberDecimal" />

<EditText
    android:id="@+id/energyinput"
    android:layout_
    android:layout_
    android:ems="10"
    android:hint="Enter input energy here (J)"
    android:inputType="number|numberSigned|numberDecimal" />

<Button
    android:id="@+id/workout"
    android:layout_
    android:layout_
    android:text="Calculate" />

<TextView
    android:id="@+id/textView15"
    android:layout_
    android:layout_
    android:textAppearance="@android:style/TextAppearance.Material.Medium" 
/>

<ImageView
    android:id="@+id/imageView11"
    android:layout_
    android:layout_
    app:srcCompat="@drawable/efficiency2" />

</LinearLayout>

澄清一下,我的应用中的所有其他活动都可以正常加载。我的应用程序的完整代码可以在我的 GitHub 上找到:My Remote Repository

这是崩溃的运行日志:

at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2946)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3046)
                  at android.app.ActivityThread.-wrap11(Unknown Source:0)
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1688)
                  at android.os.Handler.dispatchMessage(Handler.java:105)
                  at android.os.Looper.loop(Looper.java:164)
                  at android.app.ActivityThread.main(ActivityThread.java:6809)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
               Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
                  at android.support.v7.app.AppCompatDelegateImplV9.setSupportActionBar(AppCompatDelegateImplV9.java:207)
                  at android.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:130)
                  at com.laminar.calculator.calculator.Efficiency.onCreate(Efficiency.java:18)
                  at android.app.Activity.performCreate(Activity.java:6998)
                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1230)
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2899)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3046) 
                  at android.app.ActivityThread.-wrap11(Unknown Source:0) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1688) 
                  at android.os.Handler.dispatchMessage(Handler.java:105) 
                  at android.os.Looper.loop(Looper.java:164) 
                  at android.app.ActivityThread.main(ActivityThread.java:6809) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 

如果需要任何额外信息来解决此问题,请随时发表评论。

【问题讨论】:

添加崩溃日志。 无需在此处托管您的日志错误...在这里发布 看看这个***.com/questions/26515058/… 我的错,我会解决的 您的清单是什么样的? 【参考方案1】:

事实证明,我需要摆脱我创建的辅助工具栏。 我试图在活动中添加第二个工具栏。

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_efficiency);
    //Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    //setSupportActionBar(toolbar);


【讨论】:

【参考方案2】:

java.lang.IllegalStateException: 这个 Activity 已经有一个动作 酒吧提供的窗户装饰。不要要求 Window.FEATURE_SUPPORT_ACTION_BAR 并将 windowActionBar 设置为 false 您的主题改为使用工具栏

看起来您正在尝试为已有的活动设置操作栏。按照日志中的说明操作,并在您的 styles.xml(或其他名称)文件中将 windowActionBar 设置为 false,如下所示:

res/values/styles.xml(已编辑):

<style name="MyAppTheme" parent="Theme.AppCompat">
    <!-- ... -->
    <item name="windowActionBar">false</item>
</style>

这应该允许您使用自己的。

【讨论】:

谢谢,就是这样

以上是关于单击按钮后我的应用程序崩溃[重复]的主要内容,如果未能解决你的问题,请参考以下文章

QPrinter 单击按钮时我的程序崩溃为啥?

每当我单击按钮时,我的应用程序就会崩溃

为啥单击两次后我的事件侦听器与按钮解除绑定?

单击按钮时应用程序崩溃 --- 在 SWIFT 中

我的启动画面后我的程序不断崩溃。为啥?

缩放弹跳+导航栏后退按钮单击=应用程序崩溃