简体   繁体   中英

Pass a XML resource from one activity to another activity using java code in Android Studio?

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

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM