Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我单击按钮打开此活动时,它将关闭_Java_Android - Fatal编程技术网

Java 当我单击按钮打开此活动时,它将关闭

Java 当我单击按钮打开此活动时,它将关闭,java,android,Java,Android,主活动具有按钮,用于打开各种内容的新活动。一个活动,计算器,在我点击按钮后立即关闭。其他活动都很好 该活动的xml文件是: 我想用它作为参考,但没用。因此,即使在我复制并粘贴它,更改活动名称之后,它仍然不起作用。我在学习,所以我迷路了。只需要取2个数字并将它们相加。谢谢你的帮助 编辑:以下是日志: 04-06 19:35:50.286: V/Activity(4144): onPause com.example.welderhelper.MainActivity@4204ef40 04-06

主活动具有按钮,用于打开各种内容的新活动。一个活动,计算器,在我点击按钮后立即关闭。其他活动都很好

该活动的xml文件是:

我想用它作为参考,但没用。因此,即使在我复制并粘贴它,更改活动名称之后,它仍然不起作用。我在学习,所以我迷路了。只需要取2个数字并将它们相加。谢谢你的帮助

编辑:以下是日志:

04-06 19:35:50.286: V/Activity(4144): onPause  com.example.welderhelper.MainActivity@4204ef40
04-06 19:35:50.306: V/Activity(4144): onCreate  com.example.welderhelper.Calculators@42346760: null
04-06 19:35:50.336: D/AndroidRuntime(4144): Shutting down VM
04-06 19:35:50.336: W/dalvikvm(4144): threadid=1: thread exiting with uncaught exception (group=0x41dd0700)
04-06 19:35:50.336: E/AndroidRuntime(4144): FATAL EXCEPTION: main
04-06 19:35:50.336: E/AndroidRuntime(4144): java.lang.RuntimeException: Unable to start activity   ComponentInfo{com.example.welderhelper/com.example.welderhelper.Calculators}:  java.lang.NullPointerException
04-06 19:35:50.336: E/AndroidRuntime(4144):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2340)
04-06 19:35:50.336: E/AndroidRuntime(4144):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
04-06 19:35:50.336: E/AndroidRuntime(4144):     at android.app.ActivityThread.access$600(ActivityThread.java:153)
04-06 19:35:50.336: E/AndroidRuntime(4144):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1269)
04-06 19:35:50.336: E/AndroidRuntime(4144):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-06 19:35:50.336: E/AndroidRuntime(4144):     at android.os.Looper.loop(Looper.java:137)
04-06 19:35:50.336: E/AndroidRuntime(4144):     at android.app.ActivityThread.main(ActivityThread.java:5290)
04-06 19:35:50.336: E/AndroidRuntime(4144):     at java.lang.reflect.Method.invokeNative(Native Method)
04-06 19:35:50.336: E/AndroidRuntime(4144):     at java.lang.reflect.Method.invoke(Method.java:525)
04-06 19:35:50.336: E/AndroidRuntime(4144):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
04-06 19:35:50.336: E/AndroidRuntime(4144):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
04-06 19:35:50.336: E/AndroidRuntime(4144):     at dalvik.system.NativeStart.main(Native Method)
04-06 19:35:50.336: E/AndroidRuntime(4144): Caused by: java.lang.NullPointerException
04-06 19:35:50.336: E/AndroidRuntime(4144):     at com.example.welderhelper.Calculators.initControls(Calculators.java:34)
04-06 19:35:50.336: E/AndroidRuntime(4144):     at com.example.welderhelper.Calculators.onCreate(Calculators.java:26)
04-06 19:35:50.336: E/AndroidRuntime(4144):     at android.app.Activity.performCreate(Activity.java:5243)
04-06 19:35:50.336: E/AndroidRuntime(4144):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
04-06 19:35:50.336: E/AndroidRuntime(4144):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2294)
04-06 19:35:50.336: E/AndroidRuntime(4144):     ... 11 more
04-06 19:35:51.527: I/Process(4144): Sending signal. PID: 4144 SIG: 9

如果您的意思是,您的应用程序在按下标记为Calculate的按钮后崩溃,可能是因为
parseDouble()
方法调用之一抛出了
NumberFormatException
。更改
calculate()
方法,如下所示:

private void calculate()
{
    try
    {
        x = Double.parseDouble(amount1.getText().toString());
        y = Double.parseDouble(amount2.getText().toString()); 
        z = x + y; 
        tt.setText(Double.toString(z));
    }
    catch (NumberFormatException e)
    {
        tt.setText("Invalid input");
    } 
}

从日志中的这两行开始

Caused by: java.lang.NullPointerException
04-06 19:35:50.336: E/AndroidRuntime(4144): at com.example.welderhelper.Calculators.initControls(Calculators.java:34)
initControls()
中的第34行出现了
null
,这似乎就是这一行

calculate.setOnClickListener(new Button.OnClickListener()
这意味着您在
活动\u calculators.xml中没有
按钮
,该按钮的
id为
calculate
。您发布的xml似乎是针对您的第一个
活动
,而不是您发布的xml,因为您发布的xml中不存在java文件中的
id
s。您尝试引用的
id
s应该位于
activity\u calculators.xml

编辑

好的,我真的需要多加注意。这些
id
在您发布的xml中,因此不是
activity\u calculators.xml
,或者您需要清理并重建项目。

尝试更改

calculate.setOnClickListener(new Button.OnClickListener(){
    public void onClick(View  v){
        calculate();
    }
});


而且。。。logcat。。。错误?我只是获取布局文件并实现initControls()方法。这对我来说很好。清洁和建造。然后检查拼写。这是NullPointerException,这意味着调用名为:calculate的按钮时无法正确初始化。单击该按钮从主活动打开此活动后,应用程序将关闭,但它仅在我添加此代码后才启动。主活动上的所有其他按钮都起作用。我尝试了你的代码,但它仍然关闭。谢谢。好的,我刚看到你贴的日志。您的按钮
calculate
似乎为空。确保它正确地位于布局xml文件中,即代码中的确切id。我认为您只需要清理和重建项目。我刚刚复制/粘贴了您的代码,它可以按原样工作。若要清理,请单击“项目”>“清理”?我这样做了,但没有起作用。从你的评论来看,听起来你把碎片和活动搞混了。您发布的xml应该位于
activity\u calculators.xml
中。我发布的xml是fragment\u calculators.xml。这就是我把所有活动的所有代码放在这里的地方,片段xml。我也做了清理和重建,但它没有工作。你应该在你的帖子中包括这一点。您在这里使用的是片段吗?对不起,是的,这个xml文件是fragment_calculators.xml。java文件是Calculators.javaOk,那么您需要
setContentView(R.layout.fragment\u Calculators)
而不是当前
setContentView()
中的xml。没问题。你也应该采纳另一个答案的建议,并使用try/catch来解决你的问题。同样的结果是,应用程序已经停止。
calculate.setOnClickListener(new Button.OnClickListener()
calculate.setOnClickListener(new Button.OnClickListener(){
    public void onClick(View  v){
        calculate();
    }
});
calculate.setOnClickListener(new View.OnClickListener(){
    public void onClick(View  v){
        calculate();
    }
});