如何在android(xml)中打开活动时随机更改背景?

如何在android(xml)中打开活动时随机更改背景?,android,xml,background,Android,Xml,Background,我在我的应用程序中有一个活动,每当我回来参加这个活动时,我都想更改它的背景。我如何将我的drawable文件夹中的图像随机化,并使它们成为我活动的背景图像。注意:这只是一项活动 我正在尝试在字符串中创建项目:- <integer-array name="MyImage"> <item >@drawable/story</item> <item >@drawable/story1</item>

我在我的应用程序中有一个活动,每当我回来参加这个活动时,我都想更改它的背景。我如何将我的drawable文件夹中的图像随机化,并使它们成为我活动的背景图像。注意:这只是一项活动

我正在尝试在字符串中创建项目:-

  <integer-array name="MyImage">
        <item >@drawable/story</item>
        <item >@drawable/story1</item>
        <item >@drawable/story2</item>
        <item >@drawable/story3</item>
        <item >@drawable/story4</item>
        <item >@drawable/story5</item>
        <item >@drawable/story6</item>
        <item >@drawable/story7</item>
        <item >@drawable/story8</item>
        <item >@drawable/story9</item>
        <item >@drawable/story10</item>
    </integer-array>
Resources res = getResources();
TypedArray myImages = res.obtainTypedArray(R.array.myImages);
12-21 17:33:25.743: E/AndroidRuntime(30832): FATAL EXCEPTION: main
12-21 17:33:25.743: E/AndroidRuntime(30832): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxx.xxx/com.xxx.xxx.angry.AngryActivity}: java.lang.NullPointerException
12-21 17:33:25.743: E/AndroidRuntime(30832):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2186)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2236)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at android.app.ActivityThread.access$600(ActivityThread.java:145)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1238)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at android.os.Looper.loop(Looper.java:137)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at android.app.ActivityThread.main(ActivityThread.java:5099)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at java.lang.reflect.Method.invokeNative(Native Method)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at java.lang.reflect.Method.invoke(Method.java:511)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:803)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:570)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at dalvik.system.NativeStart.main(Native Method)
12-21 17:33:25.743: E/AndroidRuntime(30832): Caused by: java.lang.NullPointerException
12-21 17:33:25.743: E/AndroidRuntime(30832):    at com.xxx.xxx.angry.AngryActivity.onCreate(AngryActivity.java:69)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at android.app.Activity.performCreate(Activity.java:5117)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2150)
12-21 17:33:25.743: E/AndroidRuntime(30832):    ... 11 more
但当我从字符串调用该数组(R.array.myImages)时,它不会显示在这里

任何帮助都将不胜感激。多谢各位

LogCAT:-

  <integer-array name="MyImage">
        <item >@drawable/story</item>
        <item >@drawable/story1</item>
        <item >@drawable/story2</item>
        <item >@drawable/story3</item>
        <item >@drawable/story4</item>
        <item >@drawable/story5</item>
        <item >@drawable/story6</item>
        <item >@drawable/story7</item>
        <item >@drawable/story8</item>
        <item >@drawable/story9</item>
        <item >@drawable/story10</item>
    </integer-array>
Resources res = getResources();
TypedArray myImages = res.obtainTypedArray(R.array.myImages);
12-21 17:33:25.743: E/AndroidRuntime(30832): FATAL EXCEPTION: main
12-21 17:33:25.743: E/AndroidRuntime(30832): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxx.xxx/com.xxx.xxx.angry.AngryActivity}: java.lang.NullPointerException
12-21 17:33:25.743: E/AndroidRuntime(30832):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2186)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2236)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at android.app.ActivityThread.access$600(ActivityThread.java:145)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1238)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at android.os.Looper.loop(Looper.java:137)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at android.app.ActivityThread.main(ActivityThread.java:5099)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at java.lang.reflect.Method.invokeNative(Native Method)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at java.lang.reflect.Method.invoke(Method.java:511)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:803)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:570)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at dalvik.system.NativeStart.main(Native Method)
12-21 17:33:25.743: E/AndroidRuntime(30832): Caused by: java.lang.NullPointerException
12-21 17:33:25.743: E/AndroidRuntime(30832):    at com.xxx.xxx.angry.AngryActivity.onCreate(AngryActivity.java:69)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at android.app.Activity.performCreate(Activity.java:5117)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
12-21 17:33:25.743: E/AndroidRuntime(30832):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2150)
12-21 17:33:25.743: E/AndroidRuntime(30832):    ... 11 more
试着这样做

@Override
onResume()
{
Random rnd = new Random();
int index = rnd.nextInt(11);
Drawable cur = getResources.getDrawable(ar[index]); /*I assumed ar as array of drawable Ids*/
rootView.setBackgroundDrawable(cur);
}
试着这样做

@Override
onResume()
{
Random rnd = new Random();
int index = rnd.nextInt(11);
Drawable cur = getResources.getDrawable(ar[index]); /*I assumed ar as array of drawable Ids*/
rootView.setBackgroundDrawable(cur);
}
在OnCreate()方法中粘贴此

int array[]=getResources().getIntArray(R.array.MyImage);
Random rnd = new Random();
int index = rnd.nextInt(11);
Drawable cur = getResources.getDrawable(array[index]); 
rootView.setBackgroundDrawable(cur);
编辑并尝试这个

int array[]={R.drawable.story,R.drawable.story1....};
    Random rnd = new Random();
    int index = rnd.nextInt(11);
    Drawable cur = getResources.getDrawable(array[index]); 
    rootView.setBackgroundDrawable(cur);
在OnCreate()方法中粘贴此

int array[]=getResources().getIntArray(R.array.MyImage);
Random rnd = new Random();
int index = rnd.nextInt(11);
Drawable cur = getResources.getDrawable(array[index]); 
rootView.setBackgroundDrawable(cur);
编辑并尝试这个

int array[]={R.drawable.story,R.drawable.story1....};
    Random rnd = new Random();
    int index = rnd.nextInt(11);
    Drawable cur = getResources.getDrawable(array[index]); 
    rootView.setBackgroundDrawable(cur);

首先,我在图像中定义数组,如下所示:-

private int[] mbgIds = new int[] {
        R.drawable.Image,R.drawable.Image1,R.drawable.Image2,R.drawable.Image3,
        R.drawable.Image4,R.drawable.Image5,R.drawable.Image6,R.drawable.Image7,
        R.drawable.Image8,R.drawable.Image9,R.drawable.Image10,
    };

 Random rgenerator = new Random();
 LinearLayout rootView=(LinearLayout)findViewById(R.id.layout);
之后,我定义了layoutId onCreate,如下所示:-

private int[] mbgIds = new int[] {
        R.drawable.Image,R.drawable.Image1,R.drawable.Image2,R.drawable.Image3,
        R.drawable.Image4,R.drawable.Image5,R.drawable.Image6,R.drawable.Image7,
        R.drawable.Image8,R.drawable.Image9,R.drawable.Image10,
    };

 Random rgenerator = new Random();
 LinearLayout rootView=(LinearLayout)findViewById(R.id.layout);
最后我调用(数组)像这样的随机图像背景(我之前无法解决):-

最后但并非最不重要的一点是,在ID为的XMl LinearLayout中:-

<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_margin="0dp"
        android:layout_weight="0.43"
        android:orientation="vertical"
        android:id="@+id/layout"
         >


特别感谢@hardik帮助我解决了这个问题

首先,我在图像中定义了数组,如下所示:-

private int[] mbgIds = new int[] {
        R.drawable.Image,R.drawable.Image1,R.drawable.Image2,R.drawable.Image3,
        R.drawable.Image4,R.drawable.Image5,R.drawable.Image6,R.drawable.Image7,
        R.drawable.Image8,R.drawable.Image9,R.drawable.Image10,
    };

 Random rgenerator = new Random();
 LinearLayout rootView=(LinearLayout)findViewById(R.id.layout);
之后,我定义了layoutId onCreate,如下所示:-

private int[] mbgIds = new int[] {
        R.drawable.Image,R.drawable.Image1,R.drawable.Image2,R.drawable.Image3,
        R.drawable.Image4,R.drawable.Image5,R.drawable.Image6,R.drawable.Image7,
        R.drawable.Image8,R.drawable.Image9,R.drawable.Image10,
    };

 Random rgenerator = new Random();
 LinearLayout rootView=(LinearLayout)findViewById(R.id.layout);
最后我调用(数组)像这样的随机图像背景(我之前无法解决):-

最后但并非最不重要的一点是,在ID为的XMl LinearLayout中:-

<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_margin="0dp"
        android:layout_weight="0.43"
        android:orientation="vertical"
        android:id="@+id/layout"
         >



特别感谢@hardik,他帮助我解决了这个问题

我无法为此生成任何Id..你能帮助我如何创建它吗?使用这个:Resources r=getResources();int[]ar=r.getIntArray(r.array.MyImage);我正试图在字符串中创建数组,如我在问题中所示,但..它在R.array之后不显示在ACTIVITY中..它在此处不显示图像。我无法为此生成任何Id..您可以帮助我如何创建它。使用以下命令:Resources R=getResources();int[]ar=r.getIntArray(r.array.MyImage);我正试图在字符串中创建数组,如我在问题中所示,但是..在R之后它不会显示在Activity中。数组..它不会在此处显示图像。请查看我的答案,只需复制粘贴如果找到帮助,您可以接受/标记答案:)是的,当然!!我会的。如果它对我来说工作正常。检查我的编辑,这是做这件事的替代方法在你的问题中你定义了整数数组,但这是不正确的,它应该是R.drawable.story…等等。查看我的答案,只需复制粘贴如果找到帮助你可以接受/标记答案:)是的,当然!!我会的。如果它对我来说工作正常。检查我的编辑,这是另一种方法。在你的问题中,你定义了整数数组,但这是不正确的,它应该是R.drawable.story…..等等。我在我的图像中有问题,它没有显示在那里..但我已经在字符串中定义了..它没有从那里得到..还有其他方法可以得到吗?我想你应该在版本后发布日志catafter它看起来像这样:-int array[]={R.drawable.story,R.drawable.story1,R.drawable.story2,R.drawable.story3,R.drawable.story4,R.drawable.story5,R.drawable.story6,R.drawable.story7,R.drawable.story8,R.drawable.story9,R.drawable.story10};随机rnd=new Random();int index=rnd.nextInt(11);Resources getResources=null;Drawable cur=getResources.getDrawable(数组[index]);rootView.setBackgroundDrawable(cur);您的rootView是您在上的布局您想设置imageit是您在xmlI中定义的布局我在MyImage中有问题它没有显示在那里..但我已经在字符串中定义..它没有从那里得到..有其他方法可以得到吗?我想您应该在编辑后发布日志它看起来是这样的:-int array[]={R.drawable.story,R.drawable.story1,R.drawable.story2,R.drawable.story3,R.drawable.story4,R.drawable.story5,R.drawable.story6,R.drawable.story7,R.drawable.story8,R.drawable.story9,R.drawable.story10};随机rnd=new Random();int index=rnd.nextInt(11);Resources getResources=null;Drawable cur=getResources.getDrawable(数组[index]);rootView.setBackgroundDrawable(cur);您的rootView是您要设置图像的布局它是您在xml中定义的布局