Android 将值从其他类分配给TextView
TestaActivity.javaAndroid 将值从其他类分配给TextView,android,class,android-layout,android-context,settext,Android,Class,Android Layout,Android Context,Settext,TestaActivity.java public class TestaActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tvText=(TextView)findViewB
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”。同样,一旦创建了textView1 ID,我需要在Print类中为它分配一些值
请帮我想办法做这件事 试试看:
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 !!!");
}
}
根据您的需要!!!!:) 试试看:
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 !!!");
}
}
根据您的需要!!!!:) 如果在屏幕上显示TestActivity时实例化了类Print,则可以获取tvText引用,并以某种方式将TestActivity引用传递给Print。 也许您可以通过构造函数传递它: 从活动中,您可以:
Print print = new Print(this);
其中,这表示TestActivity的实例。
然后在打印代码中,您可以执行以下操作:
TextView tvText = (TextView)((TestaActivity)context.findViewById(R.id.textView1));
tvText.setText("Sample");
另一个解决方案是从TestActivity提供一个对外部透明的接口,用于管理您在textview(或其他)上的更改。
诸如此类:
private TextView tvText;
public void setTvText(String str){
tvText.setText( str );
}
然后在你的印刷课上:
((TestaActivity)context).setTvText( "Sample" );
如果在屏幕上显示TestActivity时实例化了类Print,则可以获取tvText引用,并以某种方式将TestActivity引用传递给Print。 也许您可以通过构造函数传递它: 从活动中,您可以:
Print print = new Print(this);
其中,这表示TestActivity的实例。
然后在打印代码中,您可以执行以下操作:
TextView tvText = (TextView)((TestaActivity)context.findViewById(R.id.textView1));
tvText.setText("Sample");
另一个解决方案是从TestActivity提供一个对外部透明的接口,用于管理您在textview(或其他)上的更改。
诸如此类:
private TextView tvText;
public void setTvText(String str){
tvText.setText( str );
}
然后在你的印刷课上:
((TestaActivity)context).setTvText( "Sample" );
@imran-解决方案是正确的,只是您希望在构造函数或方法中将TextView作为参数传递
在方法中对TextView进行Harcoding是错误的,因为您无法重用它。@imran-解决方案是正确的,只是您希望将TextView作为构造函数或方法中的参数传递 在方法中对TextView进行Harcoding是错误的,因为您无法重用它