gpt4 book ai didi

java - 如何设置主 Activity 中定义的 View 文本(无 XML)

转载 作者:行者123 更新时间:2023-12-01 09:35:52 25 4
gpt4 key购买 nike

我有一个首先在主 Activity onCreate 文件中创建的 textView。像这样

Button btn = new Button();

然后我设置它的一些属性,例如 Id 和一些 LayoutParams

btn.setText("Button");
btw.setId("btn");
btn.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));

所以我的问题是如何在同一文件中访问此 ID 来更改按钮的文本。喜欢

findViewById(R.id.btn);

除非我这样做,否则我会收到错误。我假设这是因为 XML 中没有定义。

编辑:我无法在 xml 中预先定义这些按钮,因为它们是根据程序的其他因素生成的。

谢谢。

最佳答案

findViewById() 获取一个整数,因此为了获取对动态创建的 TextView 的引用,将相同的 ID 传递给此方法就足够了。

// Assign it ID 100, for example, when you're creating it
btw.setId(100);

在此示例中,您可以使用以下方式找到它:

TextView textView = (TextView) findViewById(100);

请注意,findViewById 仅查找附加到层次结构的 View ,因此您应该确保已将动态创建的 TextView 附加到层次结构。

<小时/>

替代方法:将引用保存为类成员。

首先定义 MainActivity 类的私有(private)类成员。然后在 onCreate 方法中初始化它。因此,无论您在 Activity 类中何时需要此 TextView,使用该类成员就足够了。

public class MainActivity extends Activity{
// This is the class member, I was talking about
private TextView mTextView;

@Override
protected void onCreate(Bundle savedInstanceState) {
mTextView = new TextView(this);
mTextView.setText("Button");

mTextView.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
}


public void someMethod(){
// Here you can reach to that TextView by using its reference saved in mTextView
mTextView.setText("Hi there!");
}
}

关于java - 如何设置主 Activity 中定义的 View 文本(无 XML),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38937411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com