Android以编程方式创建的按钮捕获onclick事件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (35)

我在编程中以编程方式创建了一个按钮,但现在我找不到捕获onClick事件的方法。代码如下:

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Button;


public class MainActivity extends Activity implements View.OnClickListener {

int wrapContent = LinearLayout.LayoutParams.WRAP_CONTENT;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    LinearLayout linLayout = new LinearLayout(this);

    linLayout.setOrientation(LinearLayout.VERTICAL);

    LinearLayout.LayoutParams linLayoutParam = new 
    LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 
    LinearLayout.LayoutParams.MATCH_PARENT);
    setContentView(linLayout, linLayoutParam);


        LinearLayout.LayoutParams lpView = new 
        LinearLayout.LayoutParams(wrapContent, wrapContent);

            Button btn = new Button(this);
            btn.setText("Button");
            linLayout.addView(btn, lpView);

}//fin de onCreate


@Override
public void onClick(View view) {

    switch (view.getId()) {

        case R.id.btn:  //Here the problem begins with error 'btn'

            break;


    }

   }
}

如何让它识别以编程方式创建的符号'btn'对象?

谢谢。

提问于
用户回答回答于

就像@TheWanderer所说你没有指定ID

btn.setId(your_set_id);
btn.setOnClickListener(this);

然后呢

switch(item.getItemId()) { 

case R.id.your_set_id:
break;

}
用户回答回答于

我不敢相信我找不到一个已经写过这个问题的问题......

如果您阅读文档,Google会在页面顶部告诉您该做什么:button.setOnClickListener()。在你的情况下:

Button btn = new Button(this);
btn.setOnClickListener(this);

扫码关注云+社区

领取腾讯云代金券