我的活动myActivity
包含一个TextView myTv
,另一个类myClass
包含一个方法modifyTv
。
如何使用myTv
方法修改modifyTv
的值?
class myActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myClass myc = new myClass();
myc.modifyTv();// this line of code must be able to modify myTv value.
}
}
答案 0 :(得分:1)
在'myClass'中,您需要参考您的活动,以便您可以致电
activity.findViewById(R.id.text_id)
您可以在构造函数中传递活动,或在setCurrentActivity
myClass
方法
或者,更容易引用TextView
本身。
答案 1 :(得分:1)
嗯,你可以这样做:
myc.modifyTv(myTextView);
并将您想要修改的TextView作为参数传递。
答案 2 :(得分:1)
您有几种选择:
1. 将更多信息传递给构造函数。例如,Context
或myTv
。例如:
public class MyClass {
Context context;
public MyClass(Context context) {
this.context = context;
}
public void modifyTv() {
TextView tv = (TextView) context.findViewById(R.id.myTv);
tv.setText("Foobar");
}
}
然后打电话:
MyClass m = new MyClass(this);
m.modifyTv();
2. 将更多信息传递给modifyTv()
方法。
public class MyClass {
public void modifyTv(TextView tv) {
tv.setText("Foobar");
}
}
然后打电话:
MyClass m = new MyClass();
m.modifyTv((TextView) findViewById(R.id.tv));
3。其他更复杂的方法没有多大意义。