【问题标题】:Need to save variables for my onClick需要为我的 onClick 保存变量
【发布时间】:2011-11-11 03:27:52
【问题描述】:
for ( int i = 0; i < responses.size(); i++ )
    {
        Button btn = new Button( this );
        btn.setText( guideStep.getResponse( i ).getTitle() );
        btn.setOnClickListener(new OnClickListener() {
            public void onClick( View v )
            {
                try
                {
                    //NextStep(guideStep.getStep(), guideStep.getSession(), guideStep.getResponse( i ).getId() );
                }
                catch( Exception e )
                {
                    e.printStackTrace();
                }
            }
        });
        linearLayout.addView( btn );
    }

看下面的代码。我正在将按钮动态添加到我的线性布局中。我还需要动态更改每个按钮的 onClick 事件。为此,我需要循环中的计数器和某种方法来保存我的 guideStep 对象,而无需循环。

有什么办法吗?

【问题讨论】:

  • 我需要使用我的 onClick 调用一个方法,但我需要有关我单击的按钮的信息,以便与它一起发送。我只能从在 onClick 范围之外实例化的对象中获取信息。

标签: java android button buttonclick


【解决方案1】:

您可以在按钮上使用setTag(your_id) 方法,然后在OnClick 中使用getTag() 方法获取id。

【讨论】:

    【解决方案2】:
    for ( int i = 0; i < responses.size(); i++ )
    {
         final int id = i; // save your variable
    
         ...
         try
         {
           NextStep(guideStep.getStep(), guideStep.getSession(), 
                guideStep.getResponse( id ).getId() ); // use it
         }
         ....
    }
    

    【讨论】:

      【解决方案3】:
      for ( int i = 0; i < responses.size(); i++ )
      {
          final int fin_i = i;
          ...
          btn.setOnClickListener(new OnClickListener() {
              public void onClick( View v )
              {
                 // Use fin_i 
              });
          ...
      }
      

      【讨论】:

        猜你喜欢
        • 2019-12-14
        • 2019-12-27
        • 1970-01-01
        • 1970-01-01
        • 2015-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多