Java AndroidStudios onClick错误

Java AndroidStudios onClick错误,java,android,Java,Android,嗨,我是androidStudios的新手,但这可能真的很简单,但我不确定这为什么不起作用 这是出现的错误: java.lang.IllegalStateException: Could not execute method for android:onClick at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickLis

嗨,我是androidStudios的新手,但这可能真的很简单,但我不确定这为什么不起作用

这是出现的错误:

                                 java.lang.IllegalStateException: Could not execute method for android:onClick
                  at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
                  at android.view.View.performClick(View.java:5610)
                  at android.view.View$PerformClick.run(View.java:22260)
                  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:865)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
               Caused by: java.lang.reflect.InvocationTargetException
                  at java.lang.reflect.Method.invoke(Native Method)
                  at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
                  at android.view.View.performClick(View.java:5610) 
                  at android.view.View$PerformClick.run(View.java:22260) 
                  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:865) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
               Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x5
                  at android.content.res.Resources.getText(Resources.java:331)
                  at android.support.v7.widget.ResourcesWrapper.getText(ResourcesWrapper.java:52)
                  at android.widget.TextView.setText(TextView.java:4550)
                  at jackiec.downloadmanagerapp.MainActivity.print(MainActivity.java:44)
                  at jackiec.downloadmanagerapp.MainActivity.add(MainActivity.java:38)
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                  at android.view.View.performClick(View.java:5610) 
                  at android.view.View$PerformClick.run(View.java:22260) 
                  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:865) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
activty_Main.xml:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="jackiec.downloadmanagerapp.MainActivity">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <Button
            android:text="enter"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/Enter"
            android:onClick="add"
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true" />

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textPersonName"
            android:text="Please enter a download speed:"
            android:ems="10"
            android:id="@+id/speed"
            android:layout_below="@+id/server"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textPersonName"
            android:text="Enter the probability of new Regular job:"
            android:ems="10"
            android:layout_below="@+id/probP"
            android:id="@+id/probR"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />

        <EditText
            android:layout_width="match_parent"
            android:inputType="textPersonName"
            android:text="enter a probability of new premium job:"
            android:ems="10"
            android:id="@+id/probP"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:textSize="18sp"
            android:layout_below="@+id/length"
            android:layout_height="wrap_content" />

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textPersonName"
            android:text="Enter the number of servers:"
            android:ems="10"
            android:id="@+id/server"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:layout_alignParentTop="true" />

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textPersonName"
            android:text='Please enter a length of time:'
            android:ems="10"
            android:id="@+id/length"
            android:layout_below="@+id/speed"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />

        <TextView
            android:text="Ouput"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/Output"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:layout_alignParentBottom="true"
            android:layout_below="@+id/Enter" />
    </LinearLayout>

</RelativeLayout>
我想可能是它在执行Integer.parse()时出错了。
谢谢你的帮助。

你说得对,它确实与
Integer.parse()有关。
。您可以通过检查堆栈跟踪中的以下行来确定这一点:

原因:java.lang.NumberFormatException:对于输入字符串:“1输入服务器数:”
这意味着您的
Integer.parse()
方法试图将“1Enter the number of servers:”转换为整数,这显然是错误的。现在仔细查看您的代码,您的“服务器”
EditText
字段似乎包含文本“输入服务器数:”。代码中的这一行:

intnserver=Integer.parseInt(server.getText().toString());

从“服务器”字段获取文本,并尝试将其转换为整数。您可能输入了值“1”,但没有清除该字段中的默认文本。这导致
server.getText().toString()
的值为“1Integer the number of server:”。这意味着
Integer.parse()
将抛出
NumberFormatException
,因为这不是有效的整数。您应该做的是处理此
NumberFormatException
,因为您不能始终保证用户将键入有效的数字。这看起来像:

try {
  int nServer= Integer.parseInt(server.getText().toString());
} catch (NumberFormatException e) {
  //alert the user that the number they tried to enter was invalid
}
原因:java.lang.NumberFormatException:对于输入字符串:“1输入” 服务器数:“


您只能将数字解析为整数。在名为服务器的文本字段中有字符串输入。

用于设置文本的所有EditText。尝试对所有编辑文本使用提示而不是文本

android:text="Enter the number of servers:"

并将所有整数解析放在try-catch块中

try {
  int nServer= Integer.parseInt(server.getText().toString());
    int nLength = Integer.parseInt(length.getText().toString());
    int nSpeed = Integer.parseInt(speed.getText().toString());
    int p= Integer.parseInt(probP.getText().toString());
    int r = Integer.parseInt(probR.getText().toString());
    int addAll = nServer+nLength+nSpeed+p+r;
    print(addAll);
} catch (NumberFormatException e) {
   //alert the user that the number they tried to enter was invalid
 }

可能重复的更改
output.setText(a)
to
output.setText(a+)我试着删除文本字段并输入数字,但它仍然存在crashes@jackiechen当您用数字替换该字段中的文本时,出现了什么错误?@jackiechen看起来您现在出现了不同的错误。查看您的新stacktrace:
原因:android.content.res.Resources$NotFoundException:String resource ID#0x5
是相关行。我认为可能发生的情况是,您正在尝试将整数值设置为字符串字段。服务器文本字段的xml现在看起来像这样吗:
android:text=5
?如果是这样,请尝试在5的周围加引号,如:
android:text=“5”
。有关更多信息,请参阅。我将错误日志更新为仅输入1s而不输入1sText@jackiechen将文本设置为文本视图时,它需要是stringchange
output.setText(a)
to
output.setText(a+)
android:hint="Enter the number of servers:"
try {
  int nServer= Integer.parseInt(server.getText().toString());
    int nLength = Integer.parseInt(length.getText().toString());
    int nSpeed = Integer.parseInt(speed.getText().toString());
    int p= Integer.parseInt(probP.getText().toString());
    int r = Integer.parseInt(probR.getText().toString());
    int addAll = nServer+nLength+nSpeed+p+r;
    print(addAll);
} catch (NumberFormatException e) {
   //alert the user that the number they tried to enter was invalid
 }