2

タイトルにあるように、配列を埋めようとするとコードが失敗しますが、1つのアイテムでしか機能しません

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    int width=getWidth(this);
    int height=getHeight(this);
    String resolution= new String();
    tamanhos= new String[]{ "240x320","320x480","480x800","800x1280"};
    wallpapers= new String[]{ "fdonegrobrillo"};
    resolution=tamanhos[3]

    mImages=new int[wallpapers.length];
    Resources res= this.getResources();
    for(int i=0;i<wallpapers.length;i++){
    mImages[i]=res.getIdentifier(wallpapers[i]+resolution, "drawable",this.getPackageName());
}

対応するすべてのドローアブルがあります。1つのアイテムだけでアプリを試してみると、壁紙の配列に別のアイテムを追加すると、エラーがスローされます(致命的な信号11(SIGSEGV))

私はこのようなハーコード化された配列で試しました

mImages=new int[]{
        this.getResources().getIdentifier("fdobyn800x1280",
                  "drawable", this.getPackageName())

};

動作しますが、別のアイテムを追加しても同じです

mImages=new int[]{
        this.getResources().getIdentifier("fdobyn800x1280",
                  "drawable", this.getPackageName()),
        this.getResources().getIdentifier("fdonegrobrillo800x1280",
                          "drawable", this.getPackageName())

};
4

1 に答える 1

0

壁紙配列にない場合に問題が発生する可能性があります。コードは正常に機能し、エラーはスローされません。

package com.example;
    import android.app.Activity;
    import android.content.res.Resources;
    import android.os.Bundle;

    public class MyActivity extends Activity {

        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            //int width=getWidth(this);
            //int height=getHeight(this);
            String resolution= new String();
            String[] tamanhos= new String[]{"240x320","320x480","480x800","800x1280"};
            String[] wallpapers= new String[]{"fdonegrobrillo", "2", "3"};
            resolution=tamanhos[3];

            int[] mImages=new int[wallpapers.length];
            Resources res= this.getResources();
            for(int i=0;i<wallpapers.length;i++){
                mImages[i]=res.getIdentifier(wallpapers[i]+resolution, "drawable",this.getPackageName());
            }
        }
    }
于 2012-12-07T18:40:12.313 に答える