2017-04-03 71 views
0

我有26個圖像集和26個圖像集(命名爲... z),我試圖通過通用設置一個隨機圖像到每個圖像視圖碼。 獲取運行時錯誤。ImageView:通過通用代碼更改一套imageviews src

public class MainActivity extends AppCompatActivity { 
int i = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main);   
    initialMethod(); 
    //this method loads the random images to imageview one by one 
} 

public void initialMethod() { 

    String temp; 
    TextView mytextView; 
    int randList[] ={26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; 
    ImageView myImageView;  
    int ImageViewIdList[] = {R.id.imageA1, R.id.imageA2, R.id.imageA3, R.id.imageA4, R.id.imageA5, R.id.imageA6, R.id.imageA6, R.id.imageA8, R.id.imageA9, R.id.imageA10, R.id.imageA11, R.id.imageA12, R.id.imageA13, R.id.imageA14, R.id.imageA15, R.id.imageA16, R.id.imageA17, R.id.imageA18, R.id.imageA19, R.id.imageA20, R.id.imageA21, R.id.imageA22, R.id.imageA23, R.id.imageA24, R.id.imageA25, R.id.imageA26}; 

    for (i = 0; i < 26; i++) { 

     myImageView= (ImageView)findViewById(ImageViewIdList[i]); 
     String ImageName = String.valueOf((char) (randList[i] + 97));    
     int id = getResources().getIdentifier(ImageName, "id", getPackageName()); 
     myImageView.setImageResource(id);   
    } 
+0

你能分享哪一行引發運行時錯誤嗎? – lukkea

回答

0

那麼首先 - 總是發表您的錯誤。您正試圖將ID作爲圖片資源加載。相反,將您的可繪製ID放入randList。

也可以考慮在代碼中,以及其他適當的編碼實踐動態地創建所有這些ImageViews(例如,在代碼中沒有硬編碼值等,但我敢打賭,這是一所學校的運動)

int randList[] = { R.drawable.image1, R.drawable.image2, ... } 
imageView.setImageDrawable(randList[...]); 
+0

「不幸的是,」MyABC「已停止」是錯誤消息,方便 – Murali

+0

我是新的,幾行代碼將會有所幫助。 – Murali

+0

現在感謝您的理解 – Murali

0

你打錯你的逗號之一,「17和16之間

變化:

int randList[] ={26,25,24,23,22,21,20,19,18,17'16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; 

到:

int randList[] ={26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; 
+0

對不起,這是我在這裏輸入的錯誤只有 – Murali

+0

你能發佈你的運行時錯誤嗎? – Johny

+0

$ adb shell am start -n「com.example.android.myabc/com.example.android.myabc.MainActivity」-a android.intent.action.MAIN -c android.intent.category.LAUNCHER 客戶端還沒有準備好..連接到設備上的進程18717 samsung-gt_i8190-4790723a36b310da 終止應用程序。 – Murali

0

試試這個方法...

int randList[] ={26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; 
    ImageView myImageView; 
    int ImageViewIdList[] = {R.id.imageA1, R.id.imageA2, R.id.imageA3, R.id.imageA4, R.id.imageA5, R.id.imageA6, R.id.imageA6, R.id.imageA8, R.id.imageA9, R.id.imageA10, R.id.imageA11, R.id.imageA12, R.id.imageA13, R.id.imageA14, R.id.imageA15, R.id.imageA16, R.id.imageA17, R.id.imageA18, R.id.imageA19, R.id.imageA20, R.id.imageA21, R.id.imageA22, R.id.imageA23, R.id.imageA24, R.id.imageA25, R.id.imageA26}; 

    for (int i = 0; i < 26; i++) { 
     myImageView= (ImageView)findViewById(ImageViewIdList[i]); 
     String ImageName = String.valueOf((char) (randList[i] + 97));    
     int id = getResources().getIdentifier(ImageName, "id", getPackageName()); 
    } 
+0

什麼是我找不到的變化,請問你的建議 – Murali

+0

有沒有問題在這個randList –

0

由於「鵝潭」說 我已經改變了代碼 INT ID = getResources()。則getIdentifier(randList [I], 「ID」,getPackageName()) ;

INT ID = getResources()則getIdentifier(randList [I]中, 「可拉伸」,getPackageName())。

非常感謝! :)