单击按钮时,如何通过编程方式创建一个新的TextView?

时间:2019-06-07 16:44:41

标签: java android textview

因此,我想在单击按钮时创建一个新的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)”。

4 个答案:

答案 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);