从外部类修改TextView的值

时间:2013-08-14 18:55:06

标签: android class android-activity textview

我的活动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.

}
}

3 个答案:

答案 0 :(得分:1)

在'myClass'中,您需要参考您的活动,以便您可以致电

activity.findViewById(R.id.text_id)

您可以在构造函数中传递活动,或在setCurrentActivity

中创建let say myClass方法

或者,更容易引用TextView本身。

答案 1 :(得分:1)

嗯,你可以这样做:

myc.modifyTv(myTextView);

并将您想要修改的TextView作为参数传递。

答案 2 :(得分:1)

您有几种选择:

1. 将更多信息传递给构造函数。例如,ContextmyTv。例如:

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。其他更复杂的方法没有多大意义。