Android 我的应用程序未在postexecute方法中读取if语句

Android 我的应用程序未在postexecute方法中读取if语句,android,Android,我的代码将崩溃如果我不评论语句else if(message.equals(“假日”))在postexecute上告诉我为什么不进一步如果不Eqal这行(message.equals(“假日”))为什么不打印“学校今天关闭。原因:如果我评论else if(message.equals(“假日”))此代码应用程序工作正常请检查我的if-else语句 String message; public class getDataTask extends AsyncTa

我的代码将崩溃如果我不评论语句else if(message.equals(“假日”))在postexecute上告诉我为什么不进一步如果不Eqal这行(message.equals(“假日”))为什么不打印“学校今天关闭。原因:如果我评论else if(message.equals(“假日”))此代码应用程序工作正常请检查我的if-else语句

          String message;

        public class getDataTask extends AsyncTask<Void, Void, Void> {

    getDataTask() {

    }

    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
         yourBoolean=false;
    }

    @Override
    protected Void doInBackground(Void... arg0) {
        // TODO Auto-generated method stub

        displayData();
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        // TODO Auto-generated method stub
        yourBoolean=true ;

        if ((Category_ID.size() > 0) ) {



                            listCategory.setAdapter(cla);
                            cla.notifyDataSetChanged() ;
                            listCategory.invalidateViews();
                            menu_nametxt.setText(mVal2);

                        }





else if (message.equals("holiday")) 
{
    menu_nametxt.setText("No menu available .");
    listCategory.setVisibility(View.GONE);
}   
        else
        menu_nametxt.setText("School is off today. Reason: "+mVal3);
    listCategory.setVisibility(View.GONE);

             }


                   private void displayData() {



        Cursor mCursor3 =  db.selectQuery("SELECT * FROM uss_vacation WHERE calendar_id);


    if (mCursor3.moveToFirst()) {
        do {


       Vacation_Date.add(mCursor3.getString(mCursor3.getColumnIndex("date")));

      if(mCursor3.getString(mCursor3.getColumnIndex("date")).equals(mydate))
    {
    message = "holiday";
           String  mVal  ;
    mVal = (mCursor3.getString(mCursor3.getColumnIndex("title")));

    mVal2 = mVal.toString();


    mCursor3.close();
    return;

    }


        } while (mCursor3.moveToNext());
    }

          mCursor3.close();
             }




              if i comment this code application print "School is off today. Reason: text


            else if (message.equals("holiday")) 
 // {
 //     menu_nametxt.setText("No menu available .");
 //     listCategory.setVisibility(View.GONE);
 // }   
字符串消息;
公共类getDataTask扩展了AsyncTask{
getDataTask(){
}
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
yourBoolean=false;
}
@凌驾
受保护的Void doInBackground(Void…arg0){
//TODO自动生成的方法存根
显示数据();
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
//TODO自动生成的方法存根
yourBoolean=true;
如果((类别ID.size()>0)){
setAdapter(cla);
cla.notifyDataSetChanged();
listCategory.invalidateViews();
菜单名称txt.setText(mVal2);
}
else if(message.equals(“假日”))
{
menu_nametxt.setText(“没有可用的菜单”);
listCategory.setVisibility(View.GONE);
}   
其他的
menu_nametxt.setText(“学校今天放假,原因:+mVal3”);
listCategory.setVisibility(View.GONE);
}
私有void displayData(){
游标mCursor3=db.selectQuery(“从uss\u休假中选择*日历id”);
if(mCursor3.moveToFirst()){
做{
假期日期添加(mCursor3.getString(mCursor3.getColumnIndex(“日期”));
if(mCursor3.getString(mCursor3.getColumnIndex(“日期”)).equals(mydate))
{
message=“假日”;
字符串mVal;
mVal=(mCursor3.getString(mCursor3.getColumnIndex(“title”));
mVal2=mVal.toString();
mCursor3.close();
返回;
}
}while(mCursor3.moveToNext());
}
mCursor3.close();
}
如果我评论此代码,请打印“学校今天停课。原因:文本
else if(message.equals(“假日”))
// {
//menu_nametxt.setText(“没有可用的菜单”);
//listCategory.setVisibility(View.GONE);
// }   

由于应用程序第一次运行时
消息
,当if-else语句到达
else-if(message.equals(“holiday”)
时,它将抛出
空点异常
而不是
,并使应用程序崩溃

考虑使用空字符串来初始化
消息
。(即
消息=”;


将检查顺序更改为
else if(“holiday.equals(message))

错误是什么?请发布日志?如果出现此else if块,问题是if else语句else if(message.equals(“holiday”))如果取消注释此coce块,代码工作正常else if(message.equals(“holiday”))应用程序崩溃告诉我为什么如果条件不满足其not goes last else语句??一种可能性是因为
消息
null
,因此应用程序抛出
NullPointerException
并崩溃应用程序。检查
消息
是否有值。消息变量是什么?它的初始位置是什么ize?是包含数据还是为空?您的结果是您的消息吗?应该是消息=结果;