安卓:无法定位code错误? [英] Android: unable to locate error in code?

查看:197
本文介绍了安卓:无法定位code错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

据我所知,这是希望任何人回答很长篇大论的要求,但我已尽力,我能想到的解决这个查询自己的一切。

在我的Andr​​oid应用程序,我首先有这样的活动,需要用户输入(数字),并将其传递到下一个活动:

 公共类实践活动扩展实现View.OnClickListener {    //声明瓦尔
    按钮GO2;
    的EditText enterNumber2;
    TextView的TOP2;
    TextView的bottom2;
    私人整数convertedNumber2; //改回私人整数?    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);        //设置等于文本布局视图
        的setContentView(R.layout.practice);        //调用方法intialise瓦尔
        initialiseVars();        //在点击侦听器编辑的文字和按钮设置
        go2.setOnClickListener(本);
        enterNumber2.setOnClickListener(本);    } //上创建结束    / **
     *方法来初始化所有的按钮,textviews等用来清理
     *对的onCreate。
     * /
    私人无效initialiseVars(){
        //设置从XML(初始化)所有的按钮文本视图等
        //(VID 25)
        GO2 =(按钮)findViewById(R.id.btnGoPractice);
        enterNumber2 =(EditText上)findViewById(R.id.etEnterNumberPractce);
        TOP2 =(的TextView)findViewById(R.id.tvTopPractice);
        bottom2 =(的TextView)findViewById(R.id.tvBottomPractice);    }    / **
     *与点击监听方法,对所有添加了功能
     *按钮,文本等意见
     *
     * @参数v
     * /
    公共无效的onClick(查看视图){        这就决定了被点击了什么// switch语句
        开关((视图).getId()){
        案例R.id.btnGoPractice:            //设置等于什么在EDITTEXT键入的文本视图
            。最终的字符串项= enterNumber2.getText()的toString()修剪(); //得到你的电话号码
            entry.replaceAll(\\\\ D +,); //可能删除            尝试{
                convertedNumber2 =的Integer.parseInt(输入);
            }赶上(例外五){
                // TODO:处理异常
                e.printStackTrace();
            }            意向意图=新意图(这一点,PracticeTest.class);
            如果(convertedNumber2> = 1&安培;&安培; convertedNumber2< = 12){
                intent.putExtra(convertedNumber2,convertedNumber2);
                的System.out.println(有效数量);
            }其他{
                的System.out.println(无效号码);
            }
            startActivity(意向);
            / **
             *取消注释这如果以上不工作
             //设置等于什么在最后的EditText键入的文本视图
             *字符串项= enterNumber2.getText()的toString()。
             *
             * //从字符串值转换为int convertedNumber2 =
             *的Integer.parseInt(输入);
             *
             *意向意图=新意图(这一点,PracticeTest.class);如果
             *(convertedNumber2> = 1&安培;&安培; convertedNumber2< = 12){
             * intent.putExtra(convertedNumber2,convertedNumber2);
             * startActivity(意向); }其他{
             *的System.out.println(无效号码); }
             *
             *突破;默认内容:System.out.println(无效条目);打破;
             *
             *}
             * /        }
    }} // C结束

以下活动临危数量,并开始通过问题基础上,循环数(乘次表):

 公共类PracticeTest扩展活动实现View.OnClickListener {    //声明瓦尔
    INT乘数;
    INT [] =结果INT新[12];
    INT numberPassed;
    TextView的问题;
    EDITTEXT回答;
    INT分;
    的String [] =的问题新的String [12];    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);        的setContentView(R.layout.practicetest);        //这个声明并int变量,从分配给它的一个int值
        //调用意图,如果它不存在它默认为0
        numberPassed = getIntent()getIntExtra(convertedNumber2,0);        //设置的VAR(可能做到这一点在不同的方法?
        按钮提交=(按钮)findViewById(R.id.btnGoPractice2);
        回答=(EditText上)findViewById(R.id.etEnterNumberPractice2);
        问题=(的TextView)findViewById(R.id.tvTopPractice2);        //设置监听器
        submit.setOnClickListener(本);        updateQuestion();    }    公共无效的onClick(查看视图){        //设置等于什么在EDITTEXT键入的文本视图
        最终字符串项= answer.getText()的toString()。        //从字符串值转换为int
        int类型的=的Integer.parseInt(输入); //注意:也许改名        结果[乘数 - 1] = A;
        得分++; //无关?        如果(乘数下; 12){            //称为给出答复后,
            updateQuestion();        }其他{
            //的System.out.println(分);
            意向意图=新意图(这一点,Results.class);
            intent.putExtra(结果,结果);
            intent.putExtra(numberPassed,numberPassed);
            intent.putExtra(问题的问题);
            this.startActivity(意向);
        }    }    公共无效updateQuestion(){        乘数++;        //字符串来保存的追求
        串Q = numberPassed +X+乘数+=;
        问题[乘数 - 1] = Q;
        question.setText(问题[乘数 - 1]);
        answer.setText();    }}

这个活动,然后把用户的回答等,并把它们传递给本次活动:

 公共类结果扩展活动{    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.results);        ListView控件ITEMLIST =(ListView控件)findViewById(R.id.lvresults);        //会从$ P $光伏阵列的行为
        INT [] =结果getIntent()getIntArrayExtra(结果)。        INT numberPassed = getIntent()getIntExtra(numberPassed,0);        的String [] =问题getIntent()getStringArrayExtra(问题);        ArrayList的< HashMap的<字符串,字符串> >名单=新的ArrayList< HashMap的<字符串,字符串> > ();
        //循环给列表视图
        的for(int i = 1; I< = 12;我++)
        {
            INT userAnswer =结果[I - 1];            INT expectedAnswer = numberPassed *我;            串userString = numberPassed +×+ I +=+ userAnswer;
            串expectedString =+ expectedAnswer;            HashMap的<字符串,字符串>地图=新的HashMap<字符串,字符串> ();            map.put(用户,userString);
            map.put(预期,expectedString);            list.add(地图);
        }         //实例化定制阵列适配器
        MyArrayAdapterPractice适配器=新MyArrayAdapterPractice(this.getApplicationContext(),R.layout.list_row_practice,列表,问题的结果);        //在这里设置的自定义适配器的ListView的。
        itemList.setAdapter(适配器);    }
}

在这个过程中我用下面的适配器:

 公共类MyArrayAdapterPractice扩展ArrayAdapter< ArrayList的<&HashMap的LT;字符串,字符串>>>
{
    上下文mContext;
    ArrayList的<&HashMap的LT;字符串,字符串>> mQuestionArrayList;
    INT mLayoutResourceId;
    的String [] mQuestionsArray;
    INT [] mUsersAnswers;    公共MyArrayAdapterPractice(上下文的背景下,INT layoutResourceId,ArrayList的<&HashMap的LT;字符串,字符串>> questionsArrayList,字符串[] questionsArray,INT [] usersAnswers)
    {
        超(背景下,layoutResourceId);
        mContext =背景;
        this.mQuestionArrayList = questionsArrayList;
        this.mLayoutResourceId = layoutResourceId;
        this.mQuestionsArray = questionsArray;
        this.mUsersAnswers = usersAnswers;
    }    @覆盖
    公众诠释getCount将()
    {
        返回mQuestionArrayList.size();
    }    @覆盖
    公共查看getView(INT位置,查看排,父母的ViewGroup)
    {
        HashMap的<字符串,字符串>问题= mQuestionArrayList.get(位置);        LayoutInflater吹气= LayoutInflater.from(mContext);        //在这里你将初始化排布置,通过虚报xml文件list_row。
        行= inflater.inflate(this.mLayoutResourceId,父母,假);        //这里我们初始化的list_row布局定义的这两个TextViews。
        TextView的questionTxtView =(TextView中)row.findViewById(R.id.tvPracticeQuestion);
        TextView的answerTxtView =(TextView中)row.findViewById(R.id.tvPracticeAnswer);
        TextView的correctAnswerTxtView =(TextView中)row.findViewById(R.id.tvPracticeCorrect);        questionTxtView.setText(mQuestionsArray [位置]);
        answerTxtView.setText(将String.valueOf(mUsersAnswers [位置]));
        correctAnswerTxtView.setText(question.get(预期)的toString());        //这只是一个伪code,显示您何时以及如何设置的颜色
        // TextView的编程。
        如果(mUsersAnswers [位置]!=的Integer.parseInt(question.get(预期)。的toString()))
            answerTxtView.setTextColor(Color.RED);
        其他
            answerTxtView.setTextColor(Color.GREEN);        返回行;
    }
}

最后,这是logcat的错误跟踪,我得到的,当我尝试运行code(请注意,模拟器削减了就像results.java活动即将开启):

  04-28 19:03:54.792:E / AndroidRuntime(1059):致命异常:主要
04-28 19:03:54.792:E / AndroidRuntime(1059):工艺:com.example.multapply,PID:1059
04-28 19:03:54.792:E / AndroidRuntime(1059):java.lang.NumberFormatException:无效INT:9
04-28 19:03:54.792:E / AndroidRuntime(1059):在java.lang.Integer.invalidInt(Integer.java:137)
04-28 19:03:54.792:E / AndroidRuntime(1059):在java.lang.Integer.parse(Integer.java:374)
04-28 19:03:54.792:E / AndroidRuntime(1059):在java.lang.Integer.parseInt(Integer.java:365)
04-28 19:03:54.792:E / AndroidRuntime(1059):在java.lang.Integer.parseInt(Integer.java:331)
04-28 19:03:54.792:E / AndroidRuntime(1059):在com.example.multapply.MyArrayAdapterPractice.getView(MyArrayAdapterPractice.java:59)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.widget.AbsListView.obtainView(AbsListView.java:2263)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.widget.ListView.measureHeightOfChildren(ListView.java:1263)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.widget.ListView.onMeasure(ListView.java:1175)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.view.View.measure(View.java:16497)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.view.View.measure(View.java:16497)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.view.View.measure(View.java:16497)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
04-28 19:03:54.792:E / AndroidRuntime(1059):在com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.view.View.measure(View.java:16497)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
04-28 19:03:54.792:E / AndroidRuntime(1059):在com.android.internal.policy.impl.PhoneWindow $ DecorView.onMeasure(PhoneWindow.java:2291)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.view.View.measure(View.java:16497)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1916)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1113)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1295)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:5670)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.view.Choreographer $ CallbackRecord.run(Choreographer.java:761)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.view.Choreographer.doCallbacks(Choreographer.java:574)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.view.Choreographer.doFrame(Choreographer.java:544)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:747)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.os.Handler.handleCallback(Handler.java:733)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.os.Handler.dispatchMessage(Handler.java:95)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.os.Looper.loop(Looper.java:136)
04-28 19:03:54.792:E / AndroidRuntime(1059):在android.app.ActivityThread.main(ActivityThread.java:5017)
04-28 19:03:54.792:E / AndroidRuntime(1059):在java.lang.reflect.Method.invokeNative(本机方法)
04-28 19:03:54.792:E / AndroidRuntime(1059):在java.lang.reflect.Method.invoke(Method.java:515)
04-28 19:03:54.792:E / AndroidRuntime(1059):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:779)
04-28 19:03:54.792:E / AndroidRuntime(1059):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-28 19:03:54.792:E / AndroidRuntime(1059):在dalvik.system.NativeStart.main(本机方法)


解决方案

要那个地方的错误就在于,你要的阅读的堆栈跟踪。这是有关部分(重点煤矿):


  

19 04-28:03:54.792:E / AndroidRuntime(1059): java.lang.NumberFormatException:无效INT:9


  
  

19 04-28:03:54.792:E / AndroidRuntime(1059):在java.lang.Integer.invalidInt(Integer.java:137)


  
  

19 04-28:03:54.792:E / AndroidRuntime(1059):在java.lang.Integer.parse(Integer.java:374)


  
  

19 04-28:03:54.792:E / AndroidRuntime(1059):在java.lang.Integer.parseInt(Integer.java:365)


  
  

19 04-28:03:54.792:E / AndroidRuntime(1059):在java.lang.Integer.parseInt(Integer.java:331)


  
  

19 04-28:03:54.792:E / AndroidRuntime(1059):是在com.example.multapply.MyArrayAdapterPractice.getView(MyArrayAdapterPractice.java:59)


所以,这意味着该错误是在文件的第59行抛出的 MyArrayAdapterPractice.java 的,里面的方法 MyArrayAdapterPractice#getView 。你只需要进入您当前code的那部分,检查并解决问题。

从分析中,该错误信息是非常具体的:

  java.lang.NumberFormatException:无效INT:9

您可以发送9,并不能转换成整数。修剪字符串,然后解析它。

这是有问题的行:

 如果(mUsersAnswers [位置]!=的Integer.parseInt(question.get(预期)。的toString()))

将其转换为

 如果(mUsersAnswers [位置]!=的Integer.parseInt(question.get(预期)。的toString()。修剪()))

I understand that it is a very long winded request to expect anyone to answer but I have tried everything that I can think of to solve this query myself.

In my android application I firstly have this activity that takes a users input (number) and passes it to the next activity:

public class Practice extends Activity implements View.OnClickListener {

    // Declaring Vars
    Button go2;
    EditText enterNumber2;
    TextView top2;
    TextView bottom2;
    private Integer convertedNumber2; // change back to private Integer?

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // setting equal to text layout View
        setContentView(R.layout.practice);

        // calling method to intialise vars
        initialiseVars();

        // setting on click listeners for edit text and button
        go2.setOnClickListener(this);
        enterNumber2.setOnClickListener(this);

    }// on create end

    /**
     * method to initialise all of the buttons, textviews etc used to clean up
     * the onCreate.
     */
    private void initialiseVars() {
        // Setting up (initialising) all the buttons text views etc from the xml
        // (vid 25)
        go2 = (Button) findViewById(R.id.btnGoPractice);
        enterNumber2 = (EditText) findViewById(R.id.etEnterNumberPractce);
        top2 = (TextView) findViewById(R.id.tvTopPractice);
        bottom2 = (TextView) findViewById(R.id.tvBottomPractice);

    }

    /**
     * Method with on click listener that adds functionality for all of the
     * buttons, text views etc
     * 
     * @param v
     */
    public void onClick(View view) {

        // switch statement which determines what is clicked
        switch ((view).getId()) {
        case R.id.btnGoPractice:

            // sets text view equal to whats typed in in editText
            final String entry = enterNumber2.getText().toString().trim();// get your number
            entry.replaceAll("\\D+","");//possibly delete

            try {
                convertedNumber2 = Integer.parseInt(entry);
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }

            Intent intent = new Intent(this, PracticeTest.class);
            if (convertedNumber2 >= 1 && convertedNumber2 <= 12) {
                intent.putExtra("convertedNumber2", convertedNumber2);
                System.out.println("Valid number");
            } else {
                System.out.println("Invalid number");
            }
            startActivity(intent);


            /**
             * UNCOMMENT THIS IF THE ABOVE DOESNT WORK
             // sets text view equal to whats typed in in editText final
             * String entry = enterNumber2.getText().toString();
             * 
             * // convert from string value to int convertedNumber2 =
             * Integer.parseInt(entry);
             * 
             * Intent intent = new Intent(this, PracticeTest.class); if
             * (convertedNumber2 >= 1 && convertedNumber2 <= 12) {
             * intent.putExtra("convertedNumber2", convertedNumber2);
             * startActivity(intent); } else {
             * System.out.println("Invalid number"); }
             * 
             * break; default: System.out.println("invalid entry"); break;
             * 
             * }
             */

        }
    }

}// c end

The following activity recieves the number and starts cycling through questions based on the number (multiplication times tables):

public class PracticeTest extends Activity implements View.OnClickListener {

    // declare vars
    int multiplier;
    int[] results = new int[12];
    int numberPassed;
    TextView question;
    EditText answer;
    int score;
    String[] questions = new String[12];

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.practicetest);

        // This declares and int variable, assigns it an int value from the
        // calling Intent if its not there it is defaulted to 0
        numberPassed = getIntent().getIntExtra("convertedNumber2", 0);

        // setting up vars(possibly do this in different method?
        Button submit = (Button) findViewById(R.id.btnGoPractice2); 
        answer = (EditText) findViewById(R.id.etEnterNumberPractice2);
        question = (TextView) findViewById(R.id.tvTopPractice2);

        // setting listeners
        submit.setOnClickListener(this);

        updateQuestion();

    }

    public void onClick(View view) {

        // sets text view equal to whats typed in in editText
        final String entry = answer.getText().toString();

        // convert from string value to int
        int a = Integer.parseInt(entry); // note: maybe change name

        results[multiplier - 1] = a;
        score++;// Irrelevant?

        if (multiplier < 12) {

            // called after an answer is given
            updateQuestion();

        } else {
            // System.out.println(score);
            Intent intent = new Intent(this, Results.class);
            intent.putExtra("results", results);
            intent.putExtra("numberPassed", numberPassed);
            intent.putExtra("questions", questions);
            this.startActivity(intent);
        }

    }

    public void updateQuestion() {

        multiplier++;

        // string to hold quest
        String q = numberPassed + "x" + multiplier + "=";
        questions[multiplier - 1] = q;
        question.setText(questions[multiplier - 1]);
        answer.setText("");

    }

}

This activity then takes the user's answers etc and passes them to this activity:

public class Results extends Activity {



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.results);

        ListView itemList = (ListView) findViewById(R.id.lvresults);

        //gets arrays from prev act
        int[] results = getIntent().getIntArrayExtra("results");

        int numberPassed = getIntent().getIntExtra("numberPassed", 0);

        String[] questions= getIntent().getStringArrayExtra("questions");



        ArrayList < HashMap <String, String> > list = new ArrayList < HashMap <String, String> > ();


        // loop to give list view
        for (int i = 1; i <= 12; i++)
        {
            int userAnswer = results[i - 1];

            int expectedAnswer = numberPassed * i;

            String userString = numberPassed + " x " + i + " = " + userAnswer;


            String expectedString = " " + expectedAnswer;

            HashMap <String, String> map = new HashMap <String, String> ();

            map.put("user", userString);
            map.put("expected", expectedString);

            list.add(map);
        }

         // Instantiate custom array adapter
        MyArrayAdapterPractice adapter = new MyArrayAdapterPractice(this.getApplicationContext(), R.layout.list_row_practice, list, questions, results);

        // Here you set the custom adapter to your ListView.
        itemList.setAdapter(adapter);

    }
}

Throughout this process I use the following adapter:

public class MyArrayAdapterPractice extends ArrayAdapter<ArrayList<HashMap<String, String>>>
{
    Context mContext;
    ArrayList<HashMap<String, String>> mQuestionArrayList;
    int mLayoutResourceId;
    String[] mQuestionsArray;
    int[] mUsersAnswers;

    public MyArrayAdapterPractice(Context context, int layoutResourceId, ArrayList<HashMap<String, String>> questionsArrayList, String[] questionsArray, int[] usersAnswers)
    {
        super(context, layoutResourceId);
        mContext = context;
        this.mQuestionArrayList = questionsArrayList;
        this.mLayoutResourceId = layoutResourceId;
        this.mQuestionsArray = questionsArray;
        this.mUsersAnswers = usersAnswers;
    }

    @Override
    public int getCount()
    {
        return mQuestionArrayList.size();
    }

    @Override
    public View getView(int position, View row, ViewGroup parent)
    {
        HashMap<String, String> question = mQuestionArrayList.get(position);

        LayoutInflater inflater = LayoutInflater.from(mContext);

        // Here you will initialize the row layout, by inflating the xml file list_row.
        row = inflater.inflate(this.mLayoutResourceId, parent, false);

        // Here we initialize those two TextViews defined in the list_row layout.
        TextView questionTxtView = (TextView) row.findViewById(R.id.tvPracticeQuestion);
        TextView answerTxtView = (TextView) row.findViewById(R.id.tvPracticeAnswer);
        TextView correctAnswerTxtView = (TextView) row.findViewById(R.id.tvPracticeCorrect);

        questionTxtView.setText(mQuestionsArray[position]);
        answerTxtView.setText(String.valueOf(mUsersAnswers[position]));
        correctAnswerTxtView.setText(question.get("expected").toString());

        // This is just a pseudo code to show you when and how to set the colors of
        // the TextView programatically.
        if(mUsersAnswers[position] != Integer.parseInt(question.get("expected").toString()))
            answerTxtView.setTextColor(Color.RED);
        else
            answerTxtView.setTextColor(Color.GREEN);

        return row;
    }
}

And finally this is the logcat error trace that I get when i try to run the code (note that the emulator cuts out just as the results.java activity is about to open):

04-28 19:03:54.792: E/AndroidRuntime(1059): FATAL EXCEPTION: main
04-28 19:03:54.792: E/AndroidRuntime(1059): Process: com.example.multapply, PID: 1059
04-28 19:03:54.792: E/AndroidRuntime(1059): java.lang.NumberFormatException: Invalid int: " 9"
04-28 19:03:54.792: E/AndroidRuntime(1059):     at java.lang.Integer.invalidInt(Integer.java:137)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at java.lang.Integer.parse(Integer.java:374)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at java.lang.Integer.parseInt(Integer.java:365)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at java.lang.Integer.parseInt(Integer.java:331)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at com.example.multapply.MyArrayAdapterPractice.getView(MyArrayAdapterPractice.java:59)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.widget.AbsListView.obtainView(AbsListView.java:2263)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.widget.ListView.measureHeightOfChildren(ListView.java:1263)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.widget.ListView.onMeasure(ListView.java:1175)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.view.View.measure(View.java:16497)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.view.View.measure(View.java:16497)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.view.View.measure(View.java:16497)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.view.View.measure(View.java:16497)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.view.View.measure(View.java:16497)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1916)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1113)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1295)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.view.Choreographer.doCallbacks(Choreographer.java:574)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.view.Choreographer.doFrame(Choreographer.java:544)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.os.Handler.handleCallback(Handler.java:733)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.os.Handler.dispatchMessage(Handler.java:95)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.os.Looper.loop(Looper.java:136)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at android.app.ActivityThread.main(ActivityThread.java:5017)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at java.lang.reflect.Method.invokeNative(Native Method)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at java.lang.reflect.Method.invoke(Method.java:515)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-28 19:03:54.792: E/AndroidRuntime(1059):     at dalvik.system.NativeStart.main(Native Method)

解决方案

To spot where the error lies, you have to read the stacktrace. This is the relevant part (emphasis mine):

04-28 19:03:54.792: E/AndroidRuntime(1059): java.lang.NumberFormatException: Invalid int: " 9"

04-28 19:03:54.792: E/AndroidRuntime(1059): at java.lang.Integer.invalidInt(Integer.java:137)

04-28 19:03:54.792: E/AndroidRuntime(1059): at java.lang.Integer.parse(Integer.java:374)

04-28 19:03:54.792: E/AndroidRuntime(1059): at java.lang.Integer.parseInt(Integer.java:365)

04-28 19:03:54.792: E/AndroidRuntime(1059): at java.lang.Integer.parseInt(Integer.java:331)

04-28 19:03:54.792: E/AndroidRuntime(1059): at com.example.multapply.MyArrayAdapterPractice.getView(MyArrayAdapterPractice.java:59)

So, this means the error was thrown in line 59 of file MyArrayAdapterPractice.java, inside method MyArrayAdapterPractice#getView. You just have to go to that part of your current code, inspect the problem and fix it.

From the analysis, the error message is very specific:

java.lang.NumberFormatException: Invalid int: " 9"

You're sending " 9" and it cannot be converted into an Integer. Trim the string, then parse it.

This is the problematic line:

if(mUsersAnswers[position] != Integer.parseInt(question.get("expected").toString()))

Convert it to

if(mUsersAnswers[position] != Integer.parseInt(question.get("expected").toString().trim()))

这篇关于安卓:无法定位code错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆