2017-05-29 133 views
1

在我的片段中,Listview Onclicklistener指向ListTrainSearch。它完美地工作,顯示一個警報對話框,除了進程對話框從不顯示。也試過AsyncTask,不成功。嘗試getActivity()。runOnUiThread,結果相同。任何答覆將是很大的幫助..在顯示警告對話框前不顯示進度對話框

public void ListTrainSearch(String spinval) { 

mProgressDialog = new ProgressDialog(getContext()); 

        mProgressDialog.setMessage("Please Wait!"); 
        mProgressDialog.setIndeterminate(true); 
        mProgressDialog.setMax(100); 
        mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
        mProgressDialog.setCancelable(false); 
             mProgressDialog.show(); 

    spinval = spinval.substring(0, Math.min(spinval.length(), 5)); 

    if (spinval.matches("\\d*")) { 
     HashMap<String, String> temp = new HashMap<String, String>(); 
     fast_list = new ArrayList<HashMap<String, String>>(); 
     temp.put(FIRST_COLUMN, "STATION"); 
     temp.put(SECOND_COLUMN, "TIME"); 
     fast_list.add(temp); 
     Boolean flag = false; 

     try { 
          File file = new File(getActivity().getExternalFilesDir(null), "pttmmc.xls"); 
      InputStream myInput = new FileInputStream(file); 
      POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput); 
      HSSFWorkbook myWorkBook = new HSSFWorkbook(myFileSystem); 
      for (int i = 0; i < myWorkBook.getNumberOfSheets(); i++) { 
       String str = ""; 
       int col_num = 0; 
       int k = 0; 
       HSSFSheet mySheet = myWorkBook.getSheetAt(i); 
       Iterator<Row> rowIterator = mySheet.iterator(); 
       int j = 0; 
       while (rowIterator.hasNext()) { 
        Row row = rowIterator.next(); 
     Iterator<Cell> cellIterator = row.cellIterator(); 
        if (row.getRowNum() == 1) { 
         k = 0; 
     while (cellIterator.hasNext()) 
     {Cell cell = cellIterator.next(); 
          switch (cell.getCellType()) { 
           case Cell.CELL_TYPE_NUMERIC: 
            str = cell.toString(); 
            break; 
           case Cell.CELL_TYPE_STRING: 
            str = cell.toString(); 
            break; 
          } 
          if (!str.isEmpty()) { 

           if (str.contains(spinval)) { 
            col_num = k; 
            flag = Boolean.TRUE; 

          } 
          k = k + 1; 
         } 
        } else if (row.getRowNum() > 1) 
         if (col_num > 0) { 
          String str1 = ""; 
          HashMap<String, String> temp1 = new HashMap<String, String>(); 
          switch (row.getCell(col_num).getCellType()) { 
           case Cell.CELL_TYPE_NUMERIC: 
            Double str2 = row.getCell(col_num).getNumericCellValue(); 
            str1 = str2.toString(); 
            if (!str1.isEmpty()) { 
             if (DateUtil.isCellDateFormatted(row.getCell(col_num))) { 
              try { 
               SimpleDateFormat sdf = new SimpleDateFormat("HH:mm", Locale.ENGLISH); 
               str1 = sdf.format(row.getCell(col_num).getDateCellValue()); 
              } catch (Exception e) { 
               // Toast.makeText(getContext(), "Crashed " + str1, Toast.LENGTH_SHORT).show(); 
               e.printStackTrace(); 
              } 
             } 
            } 
            // Toast.makeText(getContext(), "Numeric " + str1, Toast.LENGTH_SHORT).show(); 
            break; 
           case Cell.CELL_TYPE_STRING: 
            str1 = row.getCell(col_num).toString(); 
            // Toast.makeText(getContext(), "String " + str1, Toast.LENGTH_SHORT).show(); 
            break; 
          } 
          if (!str1.isEmpty()) { 
           temp1.put(FIRST_COLUMN, row.getCell(1).toString()); 
           temp1.put(SECOND_COLUMN, str1); 
           fast_list.add(temp1); 
           Toast.makeText(getContext(), row.getCell(1).toString()+" : " + str, Toast.LENGTH_SHORT).show(); 
          } 
         } 
        j = j + 1; 
        } 

      } 
     } catch (Exception e) {   //**** If xls file not found 
      mProgressDialog.dismiss(); 
      new AlertDialog.Builder(getContext()) 
        .setTitle("MOTORMAN GUIDE") 
        .setMessage("Please perform \"Check Update -> PTT Update\"") 
        // .setNegativeButton(android.R.string.no, null) 
        .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface arg0, int arg1) { 
          // MainActivity.super.onBackPressed(); 
         } 
        }) 
        .create().show(); 
      e.printStackTrace(); 
     } 
     if (flag) { //* If string match found, display alert dialog 
    mProgressDialog.dismiss(); 
      ListViewAdapters adapter = new ListViewAdapters(getActivity(), fast_list); 
      new AlertDialog.Builder(getContext()) 
        .setTitle("Train no: " + spinval) 
        .setAdapter(adapter, new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int item) { 
         } 
        }) 
        .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface arg0, int arg1) { 
          // MainActivity.super.onBackPressed(); 
         } 
        }) 
        .create().show(); 
     } else { //* If string match not found display toast 
      mProgressDialog.dismiss(); 
      Toast.makeText(getContext(), "Train Number " + spinval + " not Found ", Toast.LENGTH_SHORT).show(); 
     } 
    } else {//* If string didn't match "\\d*" 
     mProgressDialog.dismiss(); 
     Toast.makeText(getContext(), "Invalid Train Number ", Toast.LENGTH_SHORT).show(); 
    } 

}** 
+0

試'getActivity()'而不是'getContext()' –

+0

感謝您的回覆........但是沒有。不工作 – Mkrish

回答

1

試試這個:

Handler handler = new Handler(Looper.getMainLooper()) { 
      @Override 
      public void handleMessage(Message msg) { 
        mProgressDialog.setMessage("Please Wait!"); 
        mProgressDialog.setIndeterminate(true); 
        mProgressDialog.setMax(100); 
        mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
        mProgressDialog.setCancelable(false); 
        mProgressDialog.show(); 
      } 
     }; 

也許你會需要使用其他處理解僱對話框

+0

感謝您的回覆。我試過處理程序,它工作(進度對話框顯示),但只有在警報對話框(輸出)顯示後。實際上,我想顯示進度對話框來填充顯示警報對話所消耗的時間。 – Mkrish