gpt4 book ai didi

java - 安卓开发: Passing a parameter into an onClickListener()

转载 作者:行者123 更新时间:2023-12-01 18:52:50 26 4
gpt4 key购买 nike

基本上我是在 for 循环中创建按钮,我需要每个按钮在按下时返回不同的值。

我原以为创建自己的 onClickListener() 并在初始化时将所需的数据作为参数传入会起作用。我的想法似乎没有语法错误,但是在运行时单击按钮时应用程序崩溃了。

这是我迄今为止所得到的简化版本。

int counter = 1;
for( Program element : someList)
{
//some other code for dynamically creating textviews to stick the buttons in

//code which creates the buttons on the fly
moreInfo = new Button(this);
moreInfo.setText("More Info");
moreInfo.setOnClickListener(new DynamicOnClickListener(counter));
counter++;

}

自定义监听器类

import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

public class DynamicOnClickListener implements OnClickListener
{

int counter;
public DynamicOnClickListener(int acounter) {
this.counter = acounter;
}

public void onClick(View v) {
Log.v("DynamicOnClickListener","1");
Toast.makeText(v.getContext(), counter, Toast.LENGTH_LONG).show();
}

}

因此理论上,如果这有效,每个按钮都会返回不同的数字,希望这是有道理的。

最佳答案

Toast.makeText 将字符串资源 ID 作为第二个参数。您的计数器值不是有效的资源 ID,这就是您收到错误的原因。您需要传递一个String而不是int,它就会起作用。

Toast.makeText(v.getContext(), String.valueOf(counter), Toast.LENGTH_LONG).show();

关于java - 安卓开发: Passing a parameter into an onClickListener(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15207148/

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