随机背景? Android的

时间:2015-04-15 23:28:08

标签: android random background

我正在尝试为我的活动设置随机bg,但是当我进入我的活动时,我的应用程序会强制关闭。这段代码有什么问题?

在我的第一个活动中,您在点击“开始”按钮后获得相机意图,当您拍摄自己的照片时,您将进行另一项活动,结果您可以在bg中获得随机图像答案。这就像一个应用程序,你可以拍摄一张关于你自己的照片,程序会为你回答你看起来不错,或者不是这样的。答案在imageView中作为图像提供,这就是我需要随机更改bg的原因。

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        int[] images = {R.drawable.image01, R.drawable.image02, R.drawable.image03};

        setContentView(R.layout.activity_main_activity2);
        ImageView mImageView = (ImageView)findViewById(R.id.imageView);

// Get a random between 0 and images.length-1
        int imageId = (int)(Math.random() * images.length);

// Set the image
        mImageView.setBackgroundResource(images[imageId]);

        // Create the interstitial.
        interstitial = new InterstitialAd(this);
        interstitial.setAdUnitId("ca-app-pub-012012013013/01201201201");

        // Create ad request.
        AdRequest adRequest = new AdRequest.Builder().build();

        // Begin loading your interstitial.
        interstitial.loadAd(adRequest);
    }

那么问题是什么?我没有得到代码的错误,只是强行关闭,当我拍照,然后进入另一个活动。

1 个答案:

答案 0 :(得分:0)

问题可能是您在声明图像阵列后设置内容视图,尝试将数组放在' setContentView'之后。或者使数组成为可变类并在OnCreate中初始化它。

如果通过调用' runOnUIThread'来帮助尝试在主UI线程上运行背景图像设置代码行,则无法帮助您并且传递了一个新的Runnable'作为参数。

请改为尝试:

            public static Random randomGenerator = new Random();

            @Override
                protected void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.activity_main_activity2);

                    int[] images = {R.drawable.image01, R.drawable.image02, R.drawable.image03};


                ImageView mImageView = (ImageView)findViewById(R.id.imageView);

              // Get a random between 0 and images.length-1
                int randomNumber = randomGenerator.nextInt(images.length);
                final int imageId = images[randomNumber];

                     runOnUiThread(new Runnable() {
                          @Override
                          public void run() {
                               // Set the image
                               mImageView.setBackgroundResource(images[imageId]);
                          }
                     });

                // Create the interstitial.
                interstitial = new InterstitialAd(this);
                interstitial.setAdUnitId("ca-app-pub-012012013013/01201201201");

                // Create ad request.
                AdRequest adRequest = new AdRequest.Builder().build();

                // Begin loading your interstitial.
                interstitial.loadAd(adRequest);
            }