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

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 に何らかの値を割り当てる必要があります。

それを行う方法を理解するのを手伝ってください。

4

3 に答える 3

2

TestaActivity が画面上にあるときにクラス Print がインスタンス化される場合、tvText 参照を取得し、何らかの方法で TestaActivity 参照を Print に渡すことができます。たぶん、コンストラクター経由で渡すことができます:

TestaActivity から次のことを行います。

Print print = new Print(this);

ここで、これは TestaActivity のインスタンスを表します。そして、印刷コードで次のことができます。

TextView tvText = (TextView)((TestaActivity)context.findViewById(R.id.textView1));
tvText.setText("Sample");

別の解決策は、外部に対して透過的な TestaActivity からのインターフェイスを提供することです。これは、テキストビュー (または何でも) での変更を管理します。そんな感じ:

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

クラスchangetextViewtextからTextViewテキストを変更するためのActivityからの呼び出し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 に答える