Android 将值从其他类分配给TextView

Android 将值从其他类分配给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

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”。同样,一旦创建了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是错误的,因为您无法重用它