4

私はこの問題に何度も立ち往生し、さまざまな方法で問題を解決しましたが、正しい方法で問題を解決したかどうかはわかりません。次の例で問題を単純化しました。クラスにデータのみを渡すことができることは知っていますが、editTextを渡したいのですが、UIコントロールがより難しいという問題があるためです。

mainactivity.java

public class mainactivity extends Activity {

    public EditText clickEditText;
    int count =0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        newTxt();
    }

    public void newTxt() {
        txt = new MyText(context);
        txt.updateTextEdit("Main Activity");
    }
}

myText.java

public class MyText
{
    private Context _context;

    // constructor
    public MyText(Context context) 
    {
        _context = context;
    }

    public void updateTextEdit(String str)
    {
        private EditText strEditText;
        strEditText= (EditText)findViewById(_context.R.id.editTextClick); // ????
        strEditText.setText(str + " and myTxt");
    }
} 

updateTextEdit関数を修正する方法を教えていただければ幸いです。私は主な活動の文脈を渡しました。editTextを変更するにはどうすればよいですか?どうもありがとうございます!!!

4

2 に答える 2

1

本当にこの方法でこれを実行したい場合は、への参照を保存する必要があります。Activityではなく、への参照を保存する必要がありますContext。このような:

public class MyText
{
    private Activity _activity;

    // constructor
    public MyText(Activity activity) 
    {
        _activity= activity;
    }

    public void updateTextEdit(String str)
    {
        private EditText strEditText;
        strEditText= (EditText)activity.findViewById(R.id.editTextClick);
        strEditText.setText(str + " and myTxt");
    }
}

そして、newTxt()あなたは変更する必要があります:

txt = new MyText(context);

に:

txt = new MyText(this);

しかし、このメソッドをアクティビティ内に配置する方が簡単ではないでしょうか。なぜあなたはそれを別のクラスに入れたいのですか?それが本当に別のクラスにある必要がある場合は、そのクラスをアクティビティの内部クラスにすることができ、それでもアクティビティのメソッドとメンバー変数にアクセスできます。

于 2012-10-23T14:50:34.970 に答える
0

ここにも同様の質問があり ます。クラスからアクティビティUIにアクセスする方法は?

コンテキストをどのように取得したかは言わなかったので、他のクラスでを使用thisして取得する必要があります。mainactivityコンテキストではありません。

次に、呼び出しrunOnUIThreadてUIの更新を実行できます。

于 2012-10-23T14:51:37.307 に答える