1

カスタム スクリプト エンジンを使用してエキスパート システム エンジンを作成しており、一部のコマンドはメインの xml GUI と統合されています。例として、文字列を受け取り、EditText に設定する「respond」コマンドがあります。応答コマンドはアプリの機能に不可欠ですが、コマンド ルーチンが別のクラスにあるため、findViewById で EditText にアクセスできません。形式が悪いとしても、他のクラスから GUI 要素にアクセスするにはどうすればよいですか?

ありがとうございました。

4

3 に答える 3

1

他のクラスから GUI 要素にアクセスするにはどうすればよいですか?

他のクラスがアクティビティの場合は、できません。EditText のコンテンツを Intent またはその他の方法で渡す必要があります。
他のクラスがアクティビティでない場合は、EditText をパブリック フィールド変数にするだけです。または、この他のクラスにアクティビティまたはルート ビューへの参照を渡し、findViewById()大騒ぎせずに次のようなメソッドを使用できます。

于 2012-12-13T18:41:55.920 に答える
0

私はこれと同じ問題を抱えていました。アクティビティのコードが多すぎるため、外部クラスを作成してそこで処理を行いたいと考えました。ただし、 を使用して 1 つのプロセスが含まれてEditTextおり、UI を持たないクラスでそれをインスタンス化することはできません。したがって、最も簡単な解決策は、EditText myEditText変数publicstaticアクティビティで作成し、それを外部クラスで使用するときに、元のアクティビティでドット表記を使用するだけで機能するはずです。キーワードは、static他のクラス/アクティビティからアクセスできるグローバル変数にするものです。

public static EditText myEditText;// これを Activity に入れます

ActivityName.myEditText.someMethod();// 外部クラスでの EditText の使用

于 2014-12-16T06:14:11.760 に答える
0

public void setEditText(EditText myEditText)カスタムメソッド ( など) を使用するか、コンストラクターのパラメーターとして (状況に応じて) EditText オブジェクトを「他のクラス」に提供します。

もう 1 つの可能性は、EditText を定義した完全なアクティビティを送信することです。これfindViewById()により、EditText を取得するために使用できます。ただし、アクセスする必要のあるオブジェクトがたくさんない限り、お勧めしません (悪い習慣だと思います)。

于 2012-12-13T18:42:19.367 に答える