我有一个活动myActivity
,其中包含一个TextView myTv
,另一个类myClass
包含一个方法modifyTv
。
如何使用modifyTv
方法修改myTv
的值?
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.
}
}
您有几个选项:
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。其他更复杂的方法没有多大意义。
在"myClass"中,您需要对活动的引用,以便调用
activity.findViewById(R.id.text_id)
您可以在构造函数中传递活动,也可以在myClass
中创建setCurrentActivity
方法
或者,更容易引用TextView
本身。
好吧,你可以做:
myc.modifyTv(myTextView);
只需将要修改的TextView作为参数传递即可。