TextView textView = new TextView(this);
textView.setText(R.string.textView);
textView.setId(View.generateViewId());
Button blueButton = new Button(this);
blueButton.setOnClickListener(
new Button.OnClickListener() {
public void onClick(View view) {
// I can't textView.getId() because textView isn't in this scope
TextView textView = (TextView) findViewById(textView.getId());
textView.setText("You clicked the Button!");
}
}
);
我的问题是:如何生成ID,而不仅仅是硬编码一些幻数
ie:textView.setId(1);
如果变量的范围已经死亡,仍然能够实际访问Id。
答案:您可以使用blueButton.setTag(textView)然后在onClick(View视图)方法中,可以调用view.getTag();
答案 0 :(得分:1)
您必须在处理程序onClick上实例化TextView。
TextView tv;
//onCreate
tv = (TextView) findView...
tv.setOnClickListener(new ...)
//onClick
tv.setText("");
你用这种方式引用xml id:
findViewById(R.id.myTextView);
答案 1 :(得分:-3)
要访问该范围内的TextView,请将其更改为:
public static Textview myTextView;