Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.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
Android onClickListener中的变量值错误_Android_Android Layout_Android Linearlayout - Fatal编程技术网

Android onClickListener中的变量值错误

Android onClickListener中的变量值错误,android,android-layout,android-linearlayout,Android,Android Layout,Android Linearlayout,我正在动态复制线性布局,我必须为线性布局内的按钮设置onClickListeners for(int i = 0; i <10 ; i++){ // other code here Button approve_btn = (Button) findViewById(R.id.rent_number_up_btn); approve_btn.setOnClickListener(new View.OnClickListener() { @Override

我正在动态复制线性布局,我必须为线性布局内的按钮设置onClickListeners

for(int i = 0; i <10 ; i++){

   // other code here

   Button approve_btn = (Button) findViewById(R.id.rent_number_up_btn);
   approve_btn.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View view) {
          approve_btn.setText(String.valueOf(i));
       }
   });
}

for(int i=0;i问题是您正在连续10次将click listener设置为同一按钮(通过调用
findViewById()
)。您会得到值
9
,因为这是您添加到按钮的最后一个click listener。

for(int i=0;i我不确定您要做什么,但:

for(int i = 0; i <10 ; i++){

       // other code here

               Button button = new Button(<Activity Instance>);
            button.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));

       approve_btn.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
              approve_btn.setText(String.valueOf(i));
           }
       });

    }
就像@Shaishav所说的,你们使用的是同一个按钮(R.id.rent\u number\u up\u btn),你们正在替换彼此之上的点击监听器。循环完成之前(计数器“i”)的最后一个值是9,这就是为什么它总是显示9。若你们想在线性布局中添加10个按钮,只需创建新的按钮(上下文)每次循环开始时,通过将此按钮添加到布局中

yourLinearlayout.addView(yourNewButton);

然后,如果您将“单击侦听器”设置为“新建”按钮,它可能会显示不同的值:)

对不起,请详细解释您的问题。我不明白