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