私はAndroid Studioを初めて使用しています。私はFirstActivityクラスの画像IDをSecondActivityクラスに渡そうとしています。プログラムは、アートワークのテキスト記述を含む水平方向にスライドするボタンの行を表示することになっています(この部分は機能します)。ボタンをクリックすると、対応するアート作品(エミュレータでのアプリケーションの実行停止)を表示するために、ImageActivityを起動する必要があります。putExtra()を使用して2番目のアクティビティでイメージを送信および表示する方法は?
アイデア?ありがとうございました!繰り返しますが、私はこれに全く新しいので、たとえそれが本当に明白であっても、どんな洞察も役に立つでしょう。ここで
はMainActivityです:
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
Intent imgIntent = new Intent(getApplicationContext(), ImageActivity.class);
imgIntent.setAction(imgIntent.ACTION_SEND);
imgIntent.putExtra("image_id:",painting.getId());
startActivity(imgIntent);
}
};
は、ここで私はImageActivityのために、これまで持っているものです。
private Button imgButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
painting = new Painting(RenaissanceDatabase.description[index], RenaissanceDatabase.id[index]);
Intent objIntent=this.getIntent();
ImageView art = (ImageView) findViewById(R.id.imageView2);
art.setImageResource(Integer.parseInt(getExtra()));;
}
private String getExtra(){
String image_id = getIntent().getStringExtra("image_id");
return image_id;
}
そしてここでは、絵画のデータベースは次のようになります。
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
};
ここでスタックですクラッシュするとトレース:
03-21 15:41:01.283 14004-14004/edu.augustana.csc490.renaissancepaintings E/AndroidRuntime:致命的除外:メイン java.lang.RuntimeException:アクティビティを開始できませんComponentInfo {edu.augustana.csc490.renaissancepaintings/"null" at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) (android.app.ActivityThread.handleLaunchActivity(ActivityThread))でedu.augustana.csc490.renaissancepaintings.ImageActivity}:java.lang.NumberFormatExceptionが無効です。 .java:2084)android.app.ActivityThread.accessの $ 600(ActivityThread.java:130) android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1195) android.os.Handler.dispatchMessage(Handler.java:99)android.os.Looper.loop(Looper.java:137)の とandroid.app.ActivityThread.main(ActivityThread.java:4745) at java .lang.reflect.Method.invokeNative(ネイティブメソッド) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java: 786) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(ネイティブメソッド) 原因:java.lang.NumberFormatException:無効なint: "null " at java.lang.Integer.invalidInt(Integer.java:138) (java.lang.Integer.parseInt(Integer.java:355) 、java.lang.Integer.parseInt(Integer.java:332) at android.app.Instrumentation.callActivityOnCreateでedu.augustana.csc490.renaissancepaintings.ImageActivity.onCreate android.app.Activity.performCreate(Activity.java:5008)で(ImageActivity.java:40) (Instrumentation.java:1079) android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) でandroid.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) ででandroid.app.ActivityThread.access $ 600(ActivityThread.java:130) android.app.ActivityThread $ Hにあります。(android.os.Hostler.dispatchMessage(Handler.java:99) のハンドルメッセージ(ActivityThread.java:1195) android.os.ActivityThread.mainの (android.os.Looper.loop(Looper.java:137) ) ActivityThread.java:4745) at java.lang.reflect.Method.invokeNative(ネイティブメソッド) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:786) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(ネイティブメソッド) 03-21 1 5:41:03.083 14004-14004 /? I /プロセス:シグナルを送信します。 PID:14004 SIG:
art.setImageResource(Integer.parseInt(getExtra()));
getIntent().hasExtra("key")
アプリがクラッシュしたときに生成されたスタックトレースを投稿使用して、アプリあなたをクラッシュからnullの例外を防止すること、それを取得しよう – CQMだけで最新のコードとスタックトレース – Freckles