AlertDialog没有显示出来

时间:2013-05-23 13:15:11

标签: java android intellij-idea apk

我正在尝试在一款名为YouWave for Android 4.1.1的Android模拟器上做一个简单的小测试(我相信它是)。

我正在使用IntelliJ生成一个用于模拟器的APK文件。我只是进入了Artifacts并创建了一个Artifact来创建一个APK文件。没有做任何其他事情。

Project Structure Menu

应用程序的想法很简单。当某些代码运行时,将代码的结果显示在一个我可以阅读的小框中,然后在我阅读它时关闭。但是当我在模拟器中触发应用程序时,它会显示“正在加载100%”,然后没有任何反应。 (它与软件附带的其他两个应用程序一起工作,所以我知道它的工作原理。)

以下是代码:

package com.example.DalvikTest;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.content.Context;

public class MyActivity extends Activity {

    final Context context = this;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        long time = RunTest();
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setTitle("Results");
        builder.setCancelable(true);
        String s = "Time: " + time + " ns";
        builder
                .setMessage(s)
                .setCancelable(false)
                .setPositiveButton("Yes",new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        MyActivity.this.finish();
                    }
                })
                .setNegativeButton("No",new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                    }
                });
        AlertDialog alert = builder.create();
        alert.show();
    }

    public long RunTest() {
        long timeStart = System.nanoTime();
        long sum = 0;
        int[] arr = new int[1000000];
        for(int i : arr) {
            sum += i;
        }
        long timeEnd = System.nanoTime();
        long result = timeEnd - timeStart;
        return result;
    }
}

为什么现在显示结果的框?

2 个答案:

答案 0 :(得分:2)

前段时间我使用了YouWave,并且遇到了一些应用程序无法正常工作的问题。 您的问题可能在于您正在使用YouWave播放器不支持的可调试和开发签名的apk文件(它至少在旧版本中不起作用)并且您需要导出使用生产密钥签名的文件。它实际上非常简单,因为你可以生成自己的密钥,考虑到你在网站上的代表,我猜你已经熟悉这个过程,如果有人需要知道所有内容都在这里解释http://developer.android.com/tools/publishing/app-signing.html

答案 1 :(得分:1)

抱歉,我不能发表评论,因为我没有足够的声誉,

我想说的是:

我测试了你的代码并且它工作得很好。

并在oncreate中清理你的代码类型:

showDialog();

并在oncreate类型下你是这样的代码:

public void showDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setTitle("Results");
        builder.setCancelable(true);
        String s = "Time: " + time + " ns";
        builder
                .setMessage(s)
                .setCancelable(false)
                .setPositiveButton("Yes",new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        MyActivity.this.finish();
                    }
                })
                .setNegativeButton("No",new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                    }
                });
        AlertDialog alert = builder.create();
        alert.show();
    }