2016-06-02 2 views
4

Я хочу использовать диалоговое окно для отображения сообщения, содержащегося в методе ниже, а не только setText, но каждый раз, когда я использую alertBuilder, сообщение не отображается. Может ли кто-нибудь указать мне в правильном направлении?Как использовать диалоговое окно построителя предупреждений для отображения сообщения

ниже код:

   @Override 

       public void onPreviewFrame(byte[] data, Camera cam) { 

     if (data == null) throw new NullPointerException(); 
     Camera.Size size = cam.getParameters().getPreviewSize(); 
     if (size == null) throw new NullPointerException(); 

     if (!processing.compareAndSet(false, true)) return; 

     int width = size.width; 
     int height = size.height; 

     int imgAvg = ImageProcessing.decodeYUV420SPtoRedAvg(data.clone(), height, width); 
     Log.i(TAG, "imgAvg="+imgAvg); 
     if (imgAvg == 0 || imgAvg == 255) { 
      processing.set(false); 
      return; 
     } 

     int averageArrayAvg = 0; 
     int averageArrayCnt = 0; 
     for (int i = 0; i < averageArray.length; i++) { 
      if (averageArray[i] > 0) { 
       averageArrayAvg += averageArray[i]; 
       averageArrayCnt++; 
      } 
     } 

     int rollingAverage = (averageArrayCnt > 0) ? (averageArrayAvg/averageArrayCnt) : 0; 
     TYPE newType = currentType; 
     if (imgAvg < rollingAverage) { 
      newType = TYPE.RED; 
      if (newType != currentType) { 
       beats++; 
       // Log.d(TAG, "BEAT!! beats="+beats); 
      } 
     } else if (imgAvg > rollingAverage) { 
      newType = TYPE.GREEN; 
     } 

     if (averageIndex == averageArraySize) averageIndex = 0; 
     averageArray[averageIndex] = imgAvg; 
     averageIndex++; 

     // Transitioned from one state to another to the same 
     if (newType != currentType) { 
      currentType = newType; 
      image.postInvalidate(); 
     } 
      long endTime = 20; 
       //System.currentTimeMillis(); 
     double totalTimeInSecs = (endTime - startTime)/1000d; 
     if (totalTimeInSecs >= 20) { 
      double bps = (beats/totalTimeInSecs); 
      int dpm = (int) (bps * 60d); 
      if (dpm < 30 || dpm > 180) { 
       startTime = System.currentTimeMillis(); 
       beats = 0; 
       processing.set(false); 
       return; 
      } 

      Log.d(TAG, 
      "totalTimeInSecs="+totalTimeInSecs+" beats="+beats); 


      if (beatsIndex == beatsArraySize) beatsIndex = 0; 
      beatsArray[beatsIndex] = dpm; 
      beatsIndex++; 

      int beatsArrayAvg = 0; 
      int beatsArrayCnt = 0; 
      for (int i = 0; i < beatsArray.length; i++) { 
       if (beatsArray[i] > 0) { 
        beatsArrayAvg += beatsArray[i]; 
        beatsArrayCnt++; 
       } 
      } 
      int beatsAvg = (beatsArrayAvg/beatsArrayCnt); 
      //maybe here 
      startTime = System.currentTimeMillis(); 
      beats = 0; 

      text.setText(String.valueOf(beatsAvg) + "bpm"); 
     } 

код работает отлично, но я просто хочу, чтобы использовать диалоговое окно для отображения сообщения text.setText. Как мне это сделать?

+4

Пожалуйста, Google это вы узнаете –

ответ

3
public class DialogCaller { 

    public static void showDialog(Context context,String title,String message, 
            DialogInterface.OnClickListener onClickListener) { 

     AlertDialog.Builder dialog = new AlertDialog.Builder(context); 
     dialog.setTitle(title); 
     dialog.setMessage(message); 
     dialog.setPositiveButton("Ok",onClickListener); 
     dialog.show(); 
    } 
} 

Добавить этот класс в ваш проект для Android.

всякий раз, когда вы хотите отображать сообщение, просто вызывайте класс с помощью контекста, заголовка, сообщения и слушателя для кнопки ok в диалоговом окне. Как это.

Добавить ниже код вместо text.setText (String.valueOf (beatsAvg) + "bpm");

DialogCaller.showDialog(getActivity()/getApplicationContext(),"Kingmeka dialog ",String.valueOf(beatsAvg) + "bpm",new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 

        dialog.dismiss(); 
       } 
      }); 
+0

спасибо человеку, Это помогает, и работает отлично. – kingemeka

-2
 AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 
     alertDialogBuilder.setMessage(String.valueOf(beatsAvg) + "bpm"); 

     alertDialogBuilder.setPositiveButton("yes", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface arg0, int arg1) { 
      // Do what needs to be done 
     } 
     }); 

     alertDialogBuilder.setNegativeButton("No",new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      finish(); 
     } 
     }); 

     AlertDialog alertDialog = alertDialogBuilder.create(); 
     alertDialog.show(); 

Используйте приведенный выше код для отображения вашего сообщения в диалоговом окне предупреждения. Настройте его в соответствии с вашими потребностями. Для получения дополнительной информации см. this

Смежные вопросы