2016-08-01 15 views
1

我有啓動相同活動的按鈕。開始活動後,如何獲得陣列中的下一張圖像,?這裏是按鈕如何在開始活動後獲取新圖像(從數組中)?

Button btnNext = (Button) dialog.findViewById(R.id.btnNext); 
btnNext.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        dialog.dismiss(); 
        finish(); 
        startActivity(getIntent()); 
       } 

      }); 

的代碼下面是陣列

int[] array_images = { 
      R.drawable.apple, 
      R.drawable.p_dolor 
    }; 
+0

你在哪裏排列圖像? – Sree

+0

@Sree剛剛添加,它是默認圖像數組 –

+0

是否完全有必要通過調用finish();來重新啓動活動 - 如果旋轉屏幕並且作爲正常生命週期的一部分重新創建活動,會發生什麼情況。你是否可以不使用按鈕和某些邏輯循環圖像,並在'onSaveInstanceState'中保存數組中的位置(圖像顯示)並在'onCreate'中恢復該圖像? –

回答

1

爲什麼你到底想重新開始活動的每次,你可以改變你的按鈕點擊資源而不需要重新啓動活動。例如 -

int index = 0; 
int[] imgRes = {R.id.image1, R.id.image2, R.id.image3, R.id.image4}; 
    Button btnNext = (Button) dialog.findViewById(R.id.btnNext); 
btnNext.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        dialog.dismiss(); 
        updateImage(); 
       } 

      }); 
private void updateImage(){ 
    index++; 
    if(index >= imgRes.lenght) 
     index = 0; 
    ImageView imageView = findViewById(R.id.myImage); 
    imageView.setResource(imgRes[index]) 
} 

希望這將有助於:)

+0

感謝它的作品,但有什麼辦法結合updateImage();和startActivity(getIntent());? –

+0

是的,你可以做到這一點,但重新開始活動並不是一種好的做法。因爲重新啓動活動會創建另一個需要額外內存和用戶體驗的活動實例。你可以做所有事情,而無需重新開始一項活動,那麼它最好不要重新啓動它:) – Neo

0

你可以試試下面的一個你必須要管理數組下標爲象下面這樣: -

int index = 0; 
int[] array_images = {R.id.image1, R.id.image2, R.id.image3, R.id.image4}; 
Button btnNext = (Button) dialog.findViewById(R.id.btnNext); 
ImageView imageView = (ImageView)findViewById(R.id.myImage); 
        setImageRes(); 
btnNext.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        dialog.dismiss(); 
        setImageRes(); 
       } 

      }); 


private void setImageRes(){ 
     index++; 
     if(index < array_images.lenght){ 
      imageView.setResource(array_images[index]) 
     } 
} 
0

你可以這樣做:

int index = 0; 
int[] array_images = {R.id.image1, R.id.image2}; 
Button btnNext = (Button) dialog.findViewById(R.id.btnNext); 
ImageView imageView = (ImageView)findViewById(R.id.myImage); 
setImageRes(getIntent().getIntExtra()); 

btnNext.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       index = getIntent().getIntExtra(); 
       dialog.dismiss(); 
       finish(); 
        Intent intent = new Intent(this,CallActivity.class); 
        intent.putExtra("position",index++); 
      } 
     }); 

private void setImageRes(int position){ 
     imageView.setResource(array_images[position]) 
    } 
+0

CallActivity?我只使用一個活動 –

+0

在CallActivity的地方保留您正在使用的活動的名稱。它表示您正在重定向到同一活動。 – abissa

相關問題