0

I want to pass an XML resource from one activity to another activity using Java Code? I don't want to create separate different activities for different buttons.

ImageButton imageBttn = (ImageButton)findViewById(R.id.imageButton1);

imageBttn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        startActivity(new Intent(MainActivity.this, info.class));
    }
});

Pseudocode to explain what I'm trying to do:

If BUTTON_1 is clicked -Pass swirl.png to info.class

If BUTTON_2 is clicked -Pass golden.png to info.class

If BUTTON_3 is clicked -Pass arcade.png

chiwangc
  • 3,566
  • 16
  • 26
  • 32
jgomez61994
  • 19
  • 1
  • 1
  • 4

2 Answers2

0
imageBttn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this, info.class)
        intent.putExtra("image",R.drawable.ic_search_grey);
            startActivity(intent);

        }
    });

On Mainactvitiy get the int drawable

    int res = getIntent().getIntExtra("image", -1);
    if(res > -1) {
        Drawable drawable = getResources().getDrawable(res, null);
 imgBtn.setImageDrawable(drawable);
    }
rahul.ramanujam
  • 5,608
  • 7
  • 34
  • 56
0

InfoActivity.java

public class InfoActivity extends Activity {

  private static final String EXTRA_IMAGE = "image";

  public static void launch(Activity activity, @DrawableRes int imageResId) {
    Intent intent = new Intent(activity, InfoActivity.class);
    intent.putExtra(EXTRA_IMAGE, imageResId);
    activity.startActivity(intent);
  }

  @Override protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_info);

    int imageResId = getIntent().getIntExtra(EXTRA_IMAGE, -1);
    if (imageResId == -1) {
      throw new IllegalArgumentException(EXTRA_IMAGE);
      // or set error/default image resource id
    }

    // ... something to do with imageResId
  }
}

MainActivity.java

    button1.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        InfoActivity.launch(MainActivity.this, R.drawable.swirl);
      }
    });

    button2.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        InfoActivity.launch(MainActivity.this, R.drawable.golden);
      }
    });

    button3.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        InfoActivity.launch(MainActivity.this, R.drawable.arcade);
      }
    });
  }
Yuki Yoshida
  • 1,233
  • 1
  • 15
  • 28