Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android将值传递给另一个活动_Java_Android_Android Activity - Fatal编程技术网

Java Android将值传递给另一个活动

Java Android将值传递给另一个活动,java,android,android-activity,Java,Android,Android Activity,我有一个带有30个按钮的main活动(ID:imageButton1,imageButton2)。在click事件中,我开始一个名为KlikNaDugme的新活动: main活动 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); buttons = new Imag

我有一个带有30个按钮的
main活动
(ID:
imageButton1
imageButton2
)。在click事件中,我开始一个名为
KlikNaDugme
的新活动:

main活动

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);

    buttons = new ImageButton[30];

    for (int i = 0; i < buttons.length; i++) {
        buttons[i] = (ImageButton) findViewById(R.id.imageButton + i);
        vr = i;
        buttons[i].setOnClickListener(new View.OnClickListener() {
            public void onClick(View arg0) {

                Intent myIntent = new Intent(HomeActivity.this, KlikNaDugme.class).putExtra("vrijednost", vr);
                startActivity(myIntent);
            }
        });
    }
}
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_klik_na_dugme);

    int x = getIntent().getExtras().getInt("vrijednost");
    System.out.println(x);
}

问题是它总是得到29的值。如何正确传递id?

I
的值存储在按钮的标签中:

    buttons = new ImageButton[30];

    for(int i=0; i<buttons.length; i++) {
        {
            buttons[i] = (ImageButton) findViewById(getResources().getIdentifier("imageButton" + (i + 1), "id", this.getPackageName()));
            buttons[i].setTag(i);

            buttons[i].setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) {

                    Intent myIntent = new Intent(HomeActivity.this, KlikNaDugme.class)
                    myIntent.putExtra("vrijednost", Integer.parseInt(view.getTag().toString()));
                    startActivity(myIntent);
                }
            });
        }
    }
buttons=新建图像按钮[30];

对于(int i=0;i将
i
的值存储在按钮的标签中:

    buttons = new ImageButton[30];

    for(int i=0; i<buttons.length; i++) {
        {
            buttons[i] = (ImageButton) findViewById(getResources().getIdentifier("imageButton" + (i + 1), "id", this.getPackageName()));
            buttons[i].setTag(i);

            buttons[i].setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) {

                    Intent myIntent = new Intent(HomeActivity.this, KlikNaDugme.class)
                    myIntent.putExtra("vrijednost", Integer.parseInt(view.getTag().toString()));
                    startActivity(myIntent);
                }
            });
        }
    }
buttons=新建图像按钮[30];

对于(int i=0;i将vr值作为标记添加到按钮,然后使用getTag()方法在onclicklistener中获取vr值

            for(int i=0; i<buttons.length; i++) {
            {
                buttons[i] = (ImageButton) findViewById(R.id.imageButton + i);
                vr = i;
                buttons[i].setTag(vr); // This will se the vr value as tag
                buttons[i].setOnClickListener(new View.OnClickListener() {
                    public void onClick(View view) {
                        int vr = (int)view.getTag()  // this will get the vr value from view
                        Intent myIntent = new Intent(HomeActivity.this,
                                KlikNaDugme.class).putExtra("vrijednost", vr);
                        startActivity(myIntent);
                    }
                });
            }

for(int i=0;i将vr值作为标记添加到按钮,然后使用getTag()方法在onclicklistener中获取vr值

            for(int i=0; i<buttons.length; i++) {
            {
                buttons[i] = (ImageButton) findViewById(R.id.imageButton + i);
                vr = i;
                buttons[i].setTag(vr); // This will se the vr value as tag
                buttons[i].setOnClickListener(new View.OnClickListener() {
                    public void onClick(View view) {
                        int vr = (int)view.getTag()  // this will get the vr value from view
                        Intent myIntent = new Intent(HomeActivity.this,
                                KlikNaDugme.class).putExtra("vrijednost", vr);
                        startActivity(myIntent);
                    }
                });
            }
for(int i=0;i问题在于:

buttons[i] = (ImageButton) findViewById(R.id.imageButton + i);
您所做的是创建一个无效的资源引用,然后在该引用上找到您的视图,这显然是错误的。请记住
findViewById()
需要一个由Android Studio本身生成的资源id

解决方案是将所有20-30个视图引用保存在一个数组中,然后使用循环在它们上设置单击侦听器

问题在于:

buttons[i] = (ImageButton) findViewById(R.id.imageButton + i);
您所做的是创建一个无效的资源引用,然后在该引用上找到您的视图,这显然是错误的。请记住
findViewById()
需要一个由Android Studio本身生成的资源id


解决方案是将所有20-30个视图引用保存在一个数组中,然后使用循环设置它们上的单击侦听器

R.id。什么会给你一个由android studio在R类中生成的整数值,而不是what\u ever字符串。你应该使用
getResources().getIdentifier()
获取正确的资源id并将其传递给
findViewById()

请尝试此代码。它将为您获取图像按钮的正确id:

    buttons = new ImageButton[30];

    for(int i=0; i<buttons.length; i++) {
        {
            String buttonID = "imageButton" + (i+1);
            int resID = getResources().getIdentifier(buttonID, "id", getPackageName());

            buttons[i] = (ImageButton) findViewById(resID);
            buttons[i].setTag(i);
            //vr = i;
            buttons[i].setOnClickListener(new View.OnClickListener() {
                public void onClick(View args0) {

                    Intent myIntent = new Intent(HomeActivity.this,
                            KlikNaDugme.class).putExtra("vrijednost", (int)args0.getTag());
                    startActivity(myIntent);
                }
            });
        }
buttons=新建图像按钮[30];

对于(int i=0;iR.id.what\u ever将为您提供由android studio在R类中生成的整数值,而不是what\u ever字符串。您应该使用
getResources().getIdentifier()
获取正确的资源id,并将其传递给
findViewById()

请尝试此代码。它将为您获取图像按钮的正确id:

    buttons = new ImageButton[30];

    for(int i=0; i<buttons.length; i++) {
        {
            String buttonID = "imageButton" + (i+1);
            int resID = getResources().getIdentifier(buttonID, "id", getPackageName());

            buttons[i] = (ImageButton) findViewById(resID);
            buttons[i].setTag(i);
            //vr = i;
            buttons[i].setOnClickListener(new View.OnClickListener() {
                public void onClick(View args0) {

                    Intent myIntent = new Intent(HomeActivity.this,
                            KlikNaDugme.class).putExtra("vrijednost", (int)args0.getTag());
                    startActivity(myIntent);
                }
            });
        }
buttons=新建图像按钮[30];

对于(int i=0;我猜您的findViewById(R.id.imageButton+i)不正确。请看一下:按钮的名称是什么?@Mohammaddrezakhahani您是对的,有一个问题。mTak您是指id吗?在格式“@+id/imageButton1”,“@+id/imageButton2”中从1到30....@markelof查看我编辑的答案,在这里我修复了ids问题。查看编辑的答案。当用户单击ImageButtons时,vr的值为29,因为它是您最后分配给它的值。因此,您单击的任何ImageButton都将获得该值。我猜您的findViewById(R.id.ImageButton+I)不正确。请看一下:按钮的名称是什么?@Mohammaddrezakhahani您是对的,有一个问题。mTak您是指id吗?它从1到30,格式为“@+id/imageButton1”,“@+id/imageButton2”....@markelof查看我编辑的答案,在这里我解决了ids问题。查看编辑的答案。当用户单击ImageButtons时,vr的值为29,因为它是您最后分配给它的值。因此,您单击的任何ImageButton都将获得该值。nice and clean。nice and clean。