首页 > 解决方案 > 引起:java.lang.NumberFormatException:对于输入字符串:“androidx.appcompat.widget.AppCompatEditText

问题描述

我和我的搭档一直在开发一款专注于安排和预订房间的移动应用程序。我们遇到了打印问题。一旦我们点击确认信息,它就会崩溃并且不会打印到表格中。希望在解决我们的问题方面得到一些帮助。

MainActivity.java

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        RoomAppDatabase.AppDatabase db = Room.databaseBuilder(getApplicationContext(),
                RoomAppDatabase.AppDatabase.class, "database-name").allowMainThreadQueries().build();
        RoomDao rao = db.roomDao();
        RoomUser dummy;
        //create default user list
        /*for(int i = 1; i < 9; i++)
        {

            //inserts user to database
            rao.insertRoomUser(user);

        }*/

        printTable();
        //setContentView(R.layout.activity_main);
    }

    public void printTable()
    {
        //loop to write names from database to the corresponding text entries on the main Activity
        for(int i=1;i<9;i++)
        {


            if(i == 1)
            {
                TextView txt =findViewById(R.id.rb1);
                txt.setText("Reserved by: "+user1.fullName);
            }
            if(i == 2)
            {
                TextView txt =findViewById(R.id.rb2);
                txt.setText("Reserved by: "+ user2.fullName);
            }
            if(i == 3)
            {
                TextView txt =findViewById(R.id.rb3);
                txt.setText("Reserved by: "+ user3.fullName);
            }
            if(i == 4)
            {
                TextView txt =findViewById(R.id.rb4);
                txt.setText("Reserved by: "+ user4.fullName);
            }
            if(i == 5) {
                TextView txt = findViewById(R.id.rb5);
                txt.setText("Reserved by: " + user5.fullName);
            }
            if(i == 6)
            {
                TextView txt =findViewById(R.id.rb6);
                txt.setText("Reserved by: "+ user6.fullName);
            }
            if(i == 7)
            {
                TextView txt =findViewById(R.id.rb7);
                txt.setText("Reserved by: "+ user7.fullName);
            }
            if(i == 8)
            {
                TextView txt =findViewById(R.id.rb8);
                txt.setText("Reserved by: "+ user8.fullName);
            }



        }
    }


    public void btnclick_Reserve(View view){
    //put action to jump from main activity to register page here
        setContentView(R.layout.fragment_register_page);

    }

    public void btnclick_commit(View view) {
        int dummy;
        EditText editText = (EditText)findViewById(R.id.edittext1);
        dummy = Integer.parseInt((String)editText.toString());
        name = String.valueOf(dummy);
        EditText editText1 = (EditText)findViewById(R.id.edittext2);
        email = (String)editText1.toString();
        EditText editText2 = (EditText)findViewById(R.id.edittext3);
        phoneNumber = (String)editText2.toString();
        EditText editText3 = (EditText)findViewById(R.id.edittext4);
        rmNumber = (String)editText3.toString();

        //int rmInt =2;
        if(rmNumber.equals("1"))
        {
            user1.setFullName(name);

        }
        if(rmNumber.equals("2"))
        {
            user2 = new RoomUser(name,email,phoneNumber,rmNumber);
        }
        if(rmNumber.equals("3"))
        {
            user3 = new RoomUser(name,email,phoneNumber,rmNumber);
        }
        if(rmNumber.equals("4"))
        {
            user4 = new RoomUser(name,email,phoneNumber,rmNumber);
        }
        if(rmNumber.equals("5")) {
            user5 = new RoomUser(name,email,phoneNumber,rmNumber);
        }
        if(rmNumber.equals("6"))
        {
            user6 = new RoomUser(name,email,phoneNumber,rmNumber);
        }
        if(rmNumber.equals("7"))
        {
            user7 = new RoomUser(name,email,phoneNumber,rmNumber);
        }
        if(rmNumber.equals("8"))
        {
            user8 = new RoomUser(name,email,phoneNumber,rmNumber);
        }

        printTable();
        //insert to database
        //RoomUser swapuser = new RoomUser(name,email,phoneNumber,rmInt);
        //rao.updateUser(swapuser);
        //put action to return to mainActivity from registerpage
        setContentView(R.layout.activity_main);

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/schedule1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="105dp"
        android:layout_marginLeft="7dp"
        android:layout_marginTop="1dp"
        android:fontFamily="sans-serif-black"
        android:text="@string/scheduling"
        android:textColor="#000000"
        android:textSize="40sp" />

    <TextView
        android:id="@+id/hl1"
        android:layout_width="match_parent"
        android:layout_height="3dp"
        android:background="#000000"
        android:gravity="center_horizontal"
        android:text="@string/horizontal_line"
        android:textSize="25sp" />

   <LinearLayout
       android:id="@+id/linear_layout_1"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:orientation="horizontal">
       
   </LinearLayout>

    <TextView
        android:id="@+id/horizontal_line_2"
        android:layout_width="match_parent"
        android:layout_height="3dp"
        android:gravity="center_horizontal"
        android:background="#000000"
        android:text="@string/horizontal_line2"
        android:textSize="24sp"/>

    <LinearLayout
        android:id="@+id/linear_layout_2"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_gravity="center_vertical">

        <TextView
            android:id="@+id/room_01"
            android:layout_width="120dp"
            android:layout_height="60dp"
            android:fontFamily="sans-serif-black"
            android:text="@string/room_1"
            android:textColor="#000000"
            android:textSize="30sp"/>

        <TextView
            android:id="@+id/center_vertical_2"
            android:layout_width="5dp"
            android:layout_height="60dp"
            android:layout_gravity="center_vertical"
            android:background="#000000"/>

        <TextView
            android:id="@+id/rb1"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:fontFamily="sans-serif-black"
            android:text="@string/reserved_by"
            android:textColor="#012f7d"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/textviewmain"
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:hint="@string/main_edit_text"
            android:autofillHints="@string/main_edit_text"/>
    </LinearLayout>

    <TextView
        android:id="@+id/horizontal_line_3"
        android:layout_width="match_parent"
        android:layout_height="3dp"
        android:background="#000000"
        android:text="@string/line_1"/>

    <LinearLayout
        android:id="@+id/linear_layout_3"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_gravity="center_vertical">
        <TextView
            android:id="@+id/room_02"
            android:layout_width="120dp"
            android:layout_height="60dp"
            android:fontFamily="sans-serif-black"
            android:textColor="#000000"
            android:text="@string/room_2"
            android:textSize="30sp"/>
        <TextView
            android:id="@+id/center_vertical_3"
            android:layout_width="5dp"
            android:layout_height="60dp"
            android:layout_gravity="center_vertical"
            android:background="#000000"/>

        <TextView
            android:id="@+id/rb2"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:fontFamily="sans-serif-black"
            android:text="@string/reserved_by"
            android:textColor="#012f7d"
            android:textSize="20sp" />
        <TextView
            android:id="@+id/textviewmain2"
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:hint="@string/main_edit_text"
            android:autofillHints="@string/main_edit_text"/>
    </LinearLayout>

DEBUG

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.cosc3352wg, PID: 8174
    java.lang.IllegalStateException: Could not execute method for android:onClick
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:414)
        at android.view.View.performClick(View.java:7448)
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)
        at android.view.View.performClickInternal(View.java:7425)
        at android.view.View.access$3600(View.java:810)
        at android.view.View$PerformClick.run(View.java:28305)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:409)
        at android.view.View.performClick(View.java:7448) 
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119) 
        at android.view.View.performClickInternal(View.java:7425) 
        at android.view.View.access$3600(View.java:810) 
        at android.view.View$PerformClick.run(View.java:28305) 
        at android.os.Handler.handleCallback(Handler.java:938) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:223) 
        at android.app.ActivityThread.main(ActivityThread.java:7656) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 
     Caused by: java.lang.NumberFormatException: For input string: "androidx.appcompat.widget.AppCompatEditText{33d245f VFED..CL. ........ 55,528-1089,649 #7f0800aa app:id/edittext1 aid=1073741824}"
        at java.lang.Integer.parseInt(Integer.java:615)
        at java.lang.Integer.parseInt(Integer.java:650)
        at com.example.cosc3352wg.MainActivity.btnclick_commit(MainActivity.java:112)
        at java.lang.reflect.Method.invoke(Native Method) 
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:409) 
        at android.view.View.performClick(View.java:7448) 
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119) 
        at android.view.View.performClickInternal(View.java:7425) 
        at android.view.View.access$3600(View.java:810) 
        at android.view.View$PerformClick.run(View.java:28305) 
        at android.os.Handler.handleCallback(Handler.java:938) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:223) 
        at android.app.ActivityThread.main(ActivityThread.java:7656) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 

我是 android studios 和堆栈溢出的初学者用户,所以如果犯了任何菜鸟错误,我深表歉意!

标签: javaandroidxml

解决方案


你正在使用

dummy = Integer.parseInt((String)editText.toString());

toString的 editText 将返回它的信息,这是一个巨大的字符串使用getText,如下所示

dummy = Integer.parseInt((String)editText.getText().toString());

推荐阅读