TestaActivity.java
public class TestaActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tvText=(TextView)findViewById(R.id.textView1);
tvText.setText("Sample");
}
}
Print.java
public class Print {
public Print(Context tempContext) {
//I want to assign the value to the tvText from here
}
}
在上面的示例中,您可以看到我已将tvText中的文本设置为“Sample”。以同样的方式,我需要在创建后在Print类中为textView1 ID分配一些值。
请帮我弄清楚这样做的方法。
答案 0 :(得分:2)
如果您的类Print在TestaActivity出现在屏幕上时被实例化,那么您可以获得tvText参考,以某种方式传递给TestaActivity参考。 也许你可以通过构造函数传递它:
从TestaActivity,您可以:
Print print = new Print(this);
其中this表示TestaActivity的实例。 然后在您的打印代码中,您可以:
TextView tvText = (TextView)((TestaActivity)context.findViewById(R.id.textView1));
tvText.setText("Sample");
另一种解决方案是提供TestaActivity的界面,对外部透明,管理您对textview(或其他)的更改。 这样的事情:
private TextView tvText;
public void setTvText(String str){
tvText.setText( str );
}
然后在你的Print课程中:
((TestaActivity)context).setTvText( "Sample" );
答案 1 :(得分:1)
尝试:
public class Print {
protected TestaActivity context;
public Print(Context tempContext) {
context = tempContext;
}
public void changetextViewtext(final String msg){
context.runOnUiThread(new Runnable() {
@Override
public void run() {
//assign the value to the tvText from here
context.tvText.setText("Hello Test");
}
});
}
}
并从活动中调用changetextViewtext
以更改Print
类
public class TestaActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tvText=(TextView)findViewById(R.id.textView1);
tvText.setText("Sample");
Print myPrint = new Print(this);
myPrint.changetextViewtext("Hello World !!!");
}
}
根据您的需要!!!! :)。
答案 2 :(得分:1)
@imran - 解决方案是正确的,除了你想要在构造函数或方法中传递TextView作为参数。
在方法中对TextView进行编码很糟糕,因为您无法重复使用它。