If else not working in android inside for and while 循环

If else not working in android inside for and while loop

public void LoadRoutine() {
        TableRow tbrow0 = new TableRow(getActivity());

        //String[] mStrings = new String[9];
        tbrow0.setBackgroundColor(Color.parseColor("#FFFFFF"));
        tbrow0.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));
        for (String c : TimeSlotSummer) {
            TextView tv0 = new TextView(getActivity());
            tv0.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
            tv0.setGravity(Gravity.CENTER);
            tv0.setTextSize(12);
            tv0.setHeight(40);
            tv0.setWidth(76);
            tv0.setBackgroundColor(Color.parseColor("#FFFFFF"));
            tv0.setTextColor(Color.parseColor("#000000"));
            tv0.setPadding(1, 1, 1, 1);
            tv0.setText(c);
            tv0.setBackgroundColor(R.id.tableRowid);
            tbrow0.addView(tv0);
        }
        tableLayout.addView(tbrow0);

        String dept = GlobalClass.userDepartment;

        DatabaseAccess databaseAccess = DatabaseAccess.getInstance(getActivity());
        databaseAccess.Open();
        String faccode = GlobalClass.faculty_code;
        Cursor cRoutine = databaseAccess.getRoutine("Sunday",dept);

        if (cRoutine.getCount() == 0) {
            Toast.makeText(getActivity(),"No Data in Table",Toast.LENGTH_LONG).show();
        }
        else{
            while (cRoutine.moveToNext())
            {
                String[] mStrings = new String[10];

                mStrings[0] = cRoutine.getString(2);
                mStrings[1] = cRoutine.getString(4);
                mStrings[2] = cRoutine.getString(5);
                mStrings[3] = cRoutine.getString(6);
                mStrings[4] = cRoutine.getString(7);
                mStrings[5] = cRoutine.getString(8);
                mStrings[6] = cRoutine.getString(9);
                mStrings[7] = cRoutine.getString(10);
                mStrings[8] = cRoutine.getString(11);


                TableRow tbrow1 = new TableRow(getActivity());
                tbrow1.setBackgroundColor(Color.parseColor("#FFFFFF"));
                tbrow1.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));

                for (String cls:mStrings) {
                    TextView tv1 = new TextView(getActivity());
                    tv1.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
                    tv1.setGravity(Gravity.CENTER);
                    tv1.setTextSize(12);
                    tv1.setWidth(75);
                    tv1.setHeight(37);

                    tv1.setBackgroundColor(Color.parseColor("#FFFFFF"));
                    tv1.setPadding(1, 1, 1, 1);
                    tv1.setBackgroundColor(R.id.tableRowid);
                    tv1.setText(cls);
                    tv1.setTextColor(Color.parseColor("#FF0000"));
                    if(cls.contains(faccode))
                        tv1.setTextColor(Color.parseColor("#000000"));
                    else
                        tv1.setTextColor(Color.parseColor("#FF0000"));
                    tbrow1.addView(tv1);
                }
                tableLayout.addView(tbrow1);
            }
        }
    }

在最后一个for循环中,没有if-else,它可以正常工作,但是有if-else,它不起作用,即应用程序关闭并重新启动手机。

谁帮帮我,我想检查一些子字符串,然后文本颜色会改变,否则颜色正常。

如果您发布堆栈跟踪信息会有所帮助,但如果崩溃发生在此处:

            if(cls.contains(faccode))
                tv1.setTextColor(Color.parseColor("#000000"));
            else
                tv1.setTextColor(Color.parseColor("#FF0000"));

唯一的解释是你在 cls 上得到了 NullPointerException,因为如果 tv1 之前没有崩溃,它显然不是 null。

改用此代码:

            if(cls != null && cls.contains(faccode))
                tv1.setTextColor(Color.parseColor("#000000"));
            else
                tv1.setTextColor(Color.parseColor("#FF0000"));