因此,我想在单击按钮时创建一个新的TextView。由于某种原因,TextView(this)在onClick()内时不起作用。我希望仅使用Java即可做到这一点。
同样,当我在onClick内创建TextView时,制作TextView(this)时出现错误。
EditText name = layout.findViewById(R.id.enterName);
final String Name = name.getText().toString();
Button create = layout.findViewById(R.id.create);
create.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TextView textView = new TextView(this);
textView.setText(Name);
}
});
我收到错误消息“ TextView (android.content.Context) 无法在TextView中应用 至 (匿名android.view.View.OnClickListener)”。
答案 0 :(得分:0)
this
指向内部类的实例,该内部类不是(如错误所示)Context
(它是事件侦听器)。如果要使用外部类实例,则必须在this
前面加上类限定符,即MyClass.this
,其中MyClass
是您从中调用此代码的类的名称。
答案 1 :(得分:0)
当您位于点击监听器中时,this
是指监听器,而不是活动。您需要使用对活动或上下文的引用来实例化TextView。
答案 2 :(得分:0)
尝试替换此行:
func fibonacci(_ x:Int ) -> Int {
var a = 1
var b = 1
var sum = 0
var counter = 0
if counter < x {
sum = a + b
a = b
b = sum
counter += 1
}
print(sum)
return sum
}
此行:
TextView textView = new TextView(this);
如果要传递上下文,则需要使用TextView textView = new TextView(Activity.this);
。
Activity.this
指的是内部类(OnClickListener),而不是您的Activity(您的外部类)
答案 3 :(得分:0)
您的代码还可以,唯一的问题是您正在创建文本视图,但未将其添加到布局中。
所以添加
layout.addView(textView);
下方
textView.setText(Name);