2016-08-01 5 views
1

Ich habe Knopf, der die gleiche Aktivität startet. Wie kann ich das nächste Bild vom Array erhalten, nach Startaktivität? Hier ist der Code der TasteWie bekomme ich ein neues Bild (vom Array) nach der Startaktivität?

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

      }); 

Hier Array

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

wo ist das array mit image? – Sree

+0

@Sree gerade hinzugefügt, es ist Standard-Bild-Array –

+0

Ist es völlig notwendig, die Aktivität neu zu starten, indem Sie 'finish();' - was geschieht, wenn Sie den Bildschirm drehen und die Aktivität als Teil des normalen Lebenszyklus neu erstellt wird. Können Sie die Bilder nicht einfach mit einem Knopf und etwas Logik durchblättern und die Position im Array (Bild zur Anzeige) in 'onSaveInstanceState' speichern und das Bild in' onCreate' wiederherstellen? –

Antwort

1

Warum Sie genau jede Zeit neu zu starten Aktivität möchten, können Sie einfach Ihre Ressource auf die Schaltfläche klicken ändern, ohne die Aktivität Neustart. Zum Beispiel -

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]) 
} 

Hope it :)

+0

Danke, es funktioniert, aber gibt es eine Möglichkeit, updateImage() zu kombinieren; und startActivity (getIntent()); –

+0

Ja, Sie können das tun, aber das Neustarten von Aktivitäten ist keine gute Code-Übung. Da beim Neustart der Aktivität eine weitere Instanz der Aktivität erstellt wird, die zusätzlichen Speicher und Benutzererfahrung erfordert, ist dies auch nicht gut. Sie können alles ohne Neustart einer Aktivität tun, dann ist es besser, ohne es neu zu starten :) – Neo

0

Sie das unten stehend man versuchen können, helfen Sie Array-Indizierung, dass zu verwalten haben für wie unten: -

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

Sie dies tun können:

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? Ich verwende nur eine Aktivität –

+0

Behalten Sie den Namen der Aktivität, die Sie verwenden, an der Stelle von CallActivity. Es bedeutet, dass Sie zu derselben Aktivität weitergeleitet werden. – abissa

Verwandte Themen