嗨,我是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>
MainActivty.java:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
output= (TextView) this.findViewById(R.id.Output);
server =(EditText) this.findViewById(R.id.server);
length = (EditText) this.findViewById(R.id.length);
speed = (EditText) this.findViewById(R.id.speed);
probR = (EditText) this.findViewById(R.id.probR);
probP = (EditText)this.findViewById(R.id.probP);
}
TextView output;
EditText server;
EditText length;
EditText speed;
EditText probP;
EditText probR;
public void add(View view)
{
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);
}
public void print(int a)
{
output.setText(a);
}
}
我认为这可能是在做Integer.parse()时出错了。 谢谢你的帮助。
答案 0 :(得分:1)
你是对的,它确实与Caused by: java.lang.NumberFormatException: For input string: "1Enter the number of servers:"
有关。您可以通过检查堆栈跟踪中的以下行来确定这一点:
Integer.parse()
这意味着您的EditText
方法试图将“1输入服务器数量:”转换为整数,这显然是不正确的。现在仔细查看您的代码,看起来您的“服务器”int nServer= Integer.parseInt(server.getText().toString());
字段包含文本“输入服务器数量:”。代码中的这一行:
server.getText().toString()
从“server”字段获取文本,并尝试将其转换为整数。您可能输入值“1”,但未清除该字段中的默认文本。这导致Integer.parse()
的值为“1Integer服务器数量:”。这意味着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
}
,因为你不能总是保证你的用户会输入一个有效的号码。这看起来像是:
public boolean remove(T o)
答案 1 :(得分:1)
对于您设置文本的所有EditText。尝试为所有edittexts使用提示而不是文本
android:text="Enter the number of servers:"
到
android:hint="Enter the number of servers:"
并将所有Interger解析放在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
}
答案 2 :(得分:0)
引起:java.lang.NumberFormatException:对于输入字符串:“1Enter 服务器数量:“
您只能将数字解析为整数。文本字段中有字符串输入,名为server ..