正确的整数正在通过PutExtra传递 [英] Correct integer not being passed through PutExtra

查看:244
本文介绍了正确的整数正在通过PutExtra传递的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的程序显示含有艺术作品的文字说明按钮的水平滑动一行。当点击一个按钮,启动ImageActivity显示艺术的相应工作。当我点击任何按钮的文字,虽然,它总是会在Array的最后画。

我想一个int ID传递给第二个活动,以便将显示,一旦它的相应描述点击正确的画。

感谢您!

下面是我的MainActivity:

 进口android.content.Intent;
进口android.app.Activity;
进口android.os.Bundle;
进口android.view.View;
进口android.widget.Button;
进口android.widget.LinearLayout;公共类MainActivity延伸活动{    //含PAINTINGS
    私人的LinearLayout mLinearList;
    私人字符串ID;
    私人绘画画;    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_my);        //参考SCROLLABLE布局结构中的MAIN_SCREEN.XML
        mLinearList =(的LinearLayout)findViewById(R.id.linearList);        // FILL配画滚动布局结构
        fillTextCarousel();    }    私人无效fillTextCarousel(){        //填充线性表轮转配画和说明
        按钮buttonItem;        的for(int i = 0; I< RenaissanceDatabase.description.length;我++){
            //存储个人画作的按钮
            buttonItem =新按钮(本);
            绘画=新绘画(RenaissanceDatabase.description [I],RenaissanceDatabase.id [I]);            //使用内容描述属性存储
            //绘画DATA            buttonItem.setContentDescription(painting.getDescription());
            buttonItem.setText(painting.getDescription());            //设置一个onclick侦听文本按钮
            buttonItem.setOnClickListener(displayPainting);            //添加图像按钮可滚动线性表
            mLinearList.addView(buttonItem);
        }
    }    私人View.OnClickListener displayPainting =新View.OnClickListener(){
         公共无效的onClick(查看BTN){
         // COLLECT存储画中的形象
             //串Painting_ID = Integer.toString(painting.getId());
             意图imgIntent =新意图(getApplicationContext(),ImageActivity.class);
             imgIntent.setAction(imgIntent.ACTION_SEND);
             imgIntent.putExtra(image_id,painting.getId());
             startActivity(imgIntent);         }
    };

我ImageActivity,我想一个整数ID传递到:

 公共类ImageActivity延伸活动{私人绘画画;
私人诠释指数;
私人诠释[]的ID;
私有String []说明;@覆盖
保护无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_my);    意向objIntent = getIntent();
    INT ID_Val = objIntent.getIntExtra(image_id,0);
    ImageView的艺术=(ImageView的)findViewById(R.id.imageView2);
    art.setImageResource(ID_Val);
}

}

和绘画数据库,我正在采取的ID:

 公共类RenaissanceDatabase {    公共静态字符串描述[] = {
            乌尔比诺\\ nTitan,1538的维纳斯,
            圣施洗约翰\\ nLeonardo达·芬奇,1516
            巴尔达萨雷·卡斯蒂利奥内\\ nRaphael,1515的写真,
            基督Entombent的\\ nCaravaggio,1603
            加冕圣母\\ NFRA安吉利科,1435
            火星和金星\\ n桑德罗Bottcelli,1483};    公共静态INT ID [] = {
            R.drawable.painting1,// VENUS乌尔比诺
            R.drawable.painting2,//圣约翰浸信
            R.drawable.painting3,// BALDASSARE
            R.drawable.painting4,//基督的ENTOMBENT
            R.drawable.painting5,// CORONOATION
            R.drawable.painting6 //火星和金星
    };
}


解决方案

ID 按钮中你的for循环 -

 的for(int i = 0; I< RenaissanceDatabase.description.length;我++){
            //存储个人画作的按钮
            buttonItem =新按钮(本);
            绘画=新绘画(RenaissanceDatabase.description [I],RenaissanceDatabase.id [I]);            //使用内容描述属性存储
            //绘画DATA            buttonItem.setId(painting.getId());
....
        }
    }

,然后改变你的 OnClickListener -

 私人View.OnClickListener displayPainting =新View.OnClickListener(){
         公共无效的onClick(查看BTN){
    ....
             imgIntent.putExtra(image_id,btn.getId());
             startActivity(imgIntent);         }
    };

My program displays a horizontally sliding row of buttons containing the text description of a work of art. When a button is clicked, ImageActivity launches to display the corresponding work of art. When I click on any of the text buttons, though, it always displays the very last painting in the Array.

I'm trying to pass an int ID to a second activity so that it will display the correct painting once it's corresponding description is clicked.

Thank you!

Here's my MainActivity:

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

         }
    };

My ImageActivity that I am trying to pass an integer ID to:

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

}

And the painting database, which I'm taking taking the ID from:

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

解决方案

Set the id for every button in your for loop -

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

And then change your OnClickListener -

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

         }
    };

这篇关于正确的整数正在通过PutExtra传递的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆