单击按钮后我的应用程序崩溃[重复]
Posted
技术标签:
【中文标题】单击按钮后我的应用程序崩溃[重复]【英文标题】:My app crashes after a button is clicked [duplicate] 【发布时间】:2018-09-11 21:50:47 【问题描述】:当我按下应用程序主菜单上的按钮启动新活动时,整个应用程序崩溃,我不太清楚为什么。这是效率活动。这两个文件称为activity_efficiency.xml
和Efficiency.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>
这应该允许您使用自己的。
【讨论】:
谢谢,就是这样以上是关于单击按钮后我的应用程序崩溃[重复]的主要内容,如果未能解决你的问题,请参考以下文章