2016-08-01 5 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?私はCallActivityの場所で使用しているアクティビティの名前を1つのアクティビティのみを使用します。 –

+0

同じ活動にリダイレクトされていることを示します。 – abissa

関連する問題