gpt4 book ai didi

java - 正确的整数未通过 PutExtra 传递

转载 作者:行者123 更新时间:2023-12-02 03:48:09 24 4
gpt4 key购买 nike

我的程序显示一排水平滑动的按钮,其中包含艺术品的文本描述。单击按钮时,ImageActivity 会启动以显示相应的艺术作品。但是,当我单击任何文本按钮时,它总是显示数组中的最后一幅画。

我正在尝试将 int ID 传递给第二个 Activity ,以便在单击相应的描述后它将显示正确的绘画。

谢谢!

这是我的主要 Activity :

import android.content.Intent;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;

public class MainActivity extends Activity {

//CONTAINING PAINTINGS
private LinearLayout mLinearList;
private String id;
private Painting painting;

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

//REFERENCE THE SCROLLABLE LAYOUT STRUCTURE IN MAIN_SCREEN.XML
mLinearList = (LinearLayout) findViewById(R.id.linearList);

//FILL THE SCROLLABLE LAYOUT STRUCTURE WITH PAINTINGS
fillTextCarousel();

}

private void fillTextCarousel() {

// POPULATE THE LINEAR LIST CAROUSEL WITH PAINTINGS AND DESCRIPTIONS
Button buttonItem;

for (int i = 0; i < RenaissanceDatabase.description.length; i++) {
//STORE THE INDIVIDUAL PAINTINGS AS BUTTONS
buttonItem = new Button(this);


painting = new Painting(RenaissanceDatabase.description[i], RenaissanceDatabase.id[i]);

//USE THE CONTENT DESCRIPTION PROPERTY TO STORE
//PAINTING DATA

buttonItem.setContentDescription(painting.getDescription());
buttonItem.setText(painting.getDescription());

//SET AN ONCLICK LISTENER FOR THE TEXT BUTTON
buttonItem.setOnClickListener(displayPainting);

//ADD THE IMAGE BUTTON TO THE SCROLLABLE LINEAR LIST
mLinearList.addView(buttonItem);
}
}

private View.OnClickListener displayPainting = new View.OnClickListener() {
public void onClick(View btn) {
// COLLECT THE IMAGE STORED FOR THE PAINTING
//String Painting_ID = Integer.toString(painting.getId());
Intent imgIntent = new Intent(getApplicationContext(), ImageActivity.class);
imgIntent.setAction(imgIntent.ACTION_SEND);
imgIntent.putExtra("image_id", painting.getId());
startActivity(imgIntent);

}
};

我试图将整数 ID 传递给的 ImageActivity:

public class ImageActivity extends Activity {

private Painting painting;
private int index;
private int[] IDs;
private String[] Desc;

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

Intent objIntent = getIntent();
int ID_Val = objIntent.getIntExtra("image_id", 0);
ImageView art = (ImageView) findViewById(R.id.imageView2);
art.setImageResource(ID_Val);
}

}

还有绘画数据库,我从中获取 ID:

public class RenaissanceDatabase {

public static String description[] = {
"Venus of Urbino\nTitan, 1538",
"St. John the Baptist\nLeonardo da Vinci, 1516",
"Protrait of Baldassare Castiglione\nRaphael, 1515",
"The Entombent of Christ\nCaravaggio, 1603",
"Coronation of the Virgin\nFra Angelico, 1435",
"Mars and Venus\n Sandro Bottcelli, 1483"};

public static int id[] = {
R.drawable.painting1, // VENUS OF URBINO
R.drawable.painting2, // ST.JOHN BAPTIST
R.drawable.painting3, // BALDASSARE
R.drawable.painting4, // ENTOMBENT OF CHRIST
R.drawable.painting5, // CORONOATION
R.drawable.painting6 // MARS AND VENUS
};
}

最佳答案

为 for 循环中的每个 按钮 设置 id -

for (int i = 0; i < RenaissanceDatabase.description.length; i++) {
//STORE THE INDIVIDUAL PAINTINGS AS BUTTONS
buttonItem = new Button(this);


painting = new Painting(RenaissanceDatabase.description[i], RenaissanceDatabase.id[i]);

//USE THE CONTENT DESCRIPTION PROPERTY TO STORE
//PAINTING DATA

buttonItem.setId(painting.getId());
....
}
}

然后更改您的OnClickListener -

private View.OnClickListener displayPainting = new View.OnClickListener() {
public void onClick(View btn) {
....
imgIntent.putExtra("image_id", btn.getId());
startActivity(imgIntent);

}
};

关于java - 正确的整数未通过 PutExtra 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36143316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com