java - 我如何使用警报生成器对话框来显示消息

标签 java android

我想使用对话框来显示下面方法中包含的消息,而不仅仅是 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 消息。我该怎么做?

最佳答案

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 项目中。

每当你想显示一条消息时,只需调用带有上下文、标题、消息和对话中确定按钮的监听器的类。像这样。

在 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();
                }
            });

关于java - 我如何使用警报生成器对话框来显示消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37589628/

相关文章:

android - 使用 Apache Cordova 插件读取 Google 帐户信息

android - 在某些设备上看不到 GLSurfaceView

android - 从 IntentService 使用 ContentProvider

java jackson如果对象类型的变量序列化后保留类型信息

来自非 Activity 类的 android getResources()

java - 如何找到log4j,xml的位置?

java - Gradle:仅在给出特定参数时运行测试

android - 如何在 textView 中生成数学常数 e(如 exp(1))?

java - 在 HASHMAP 中计算两次键的哈希码

java - 从一个应用程序调用 session 到另一个应用程序