2

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");
    }
}

打印.java

public class Print {
    public Print(Context tempContext) {
        //I want to assign the value to the tvText from here
    }
}

在上面的示例中,如您所见,我已将 tvText 中的文本设置为“Sample”。同样,一旦创建,我需要在 Print 类中为 textView1 ID 分配一些值。

请帮我找出方法。

4

3 回答 3

2

如果您的类 Print 在 TestaActivity 出现在屏幕上时被实例化,那么您可以获得 tvText 引用,以某种方式将 TestaActivity 引用传递给 Print。也许你可以通过构造函数传递它:

从 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" );
于 2012-07-07T08:25:54.827 回答
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");    
                }
            });
        }
}

并从 Activity 调用以从ClasschangetextViewtext更改 TextView 文本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 !!!");
    }
}

根据您的需要!!!!:)

于 2012-07-07T08:25:52.627 回答
1

@imran - 解决方案是正确的,除了您希望将 TextView 作为构造函数或方法中的参数传递。

在方法中对 TextView 进行编码是不好的,因为您不能重用它。

于 2012-07-07T08:32:06.517 回答