从外部类修改TextView的值



我有一个活动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.将更多信息传递给构造函数。例如,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。其他更复杂的方法没有多大意义。

在"myClass"中,您需要对活动的引用,以便调用

activity.findViewById(R.id.text_id)

您可以在构造函数中传递活动,也可以在myClass 中创建setCurrentActivity方法

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

好吧,你可以做:

myc.modifyTv(myTextView);

只需将要修改的TextView作为参数传递即可。

最新更新