[英]pass a context to another class and change a TextView of an activity
我想从另一个非活动类更改TextView。 我在这里看到了答案, 如何在adapost的帖子中从另一个类更新活动的TextView ,但是我不知道如何正确地将上下文传递给“ ClassB”。
在主类中,我尝试了ClassB obj = new ClassB(this);
和ClassB obj = new ClassB(getApplicationContext());
。 但是每次, TextView txtView = (TextView)findViewById(R.id.text);
返回NullPointerException。
我确定我可以在setContentView
之后执行此操作,我可以从Main类获得此textView。
如何传递上下文使其起作用?
在另一个类中创建该活动的对象。 在构造函数中传递活动并将其附加到对象。 这样,活动中的所有公共变量和方法都将在另一个类中检索。
class B {
final MyActivity activity;
public B(MyActivity activity) {
this.activity = activity;
}
// here you can access all public field variables and methods of MyActivity.
}
但是对于活动到活动,您可以使所有将在“静态”之外使用的变量。
问题是Id资源。 当TextView的ID设置为@+id/text
,该对象返回NullPointerException。 当我创建Id xml资源时,添加了一个<item type="id" name="tv_zero" />
并在xml活动中android:id="@id/tv_zero"
应用程序正常运行。 我主要通过ClassB ObjOne = new ClassB(this);
调用它ClassB ObjOne = new ClassB(this);
和ObjOne.Update();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.