2012-12-13 82 views
1

我正在用自定義腳本引擎創建一個專家系統引擎,並且其中一些命令與主要的xml gui集成在一起。作爲一個例子,有一個'響應'命令接受字符串並將它們設置在EditText中。響應命令對應用程序的功能非常重要,但我無法使用findViewById訪問EditText,因爲命令例程駐留在另一個類中。即使它是不好的形式,我如何從其他類訪問GUI元素?edittext from other class

謝謝。

回答

1

如何從其他類訪問GUI元素?

如果其他班級是一個活動,你不能。您應該以Intent或其他方式傳遞EditText的內容。
如果其他類不是活動,只需將EditText設置爲公共字段變量即可。或者你可以通過這個其他類來引用你的Activity或者根視圖,並且使用像findViewById()這樣的方法而不用大驚小怪。

+0

我如何使它成爲一個公共字段變量(我假設某種XML中的一個屬性) ? –

+0

一個字段變量是一個在類內但在任何方法之外聲明的變量。 「public」或「private」是描述誰應該訪問這個特定變量的關鍵字。 – Sam

+0

在[本例中](http://developer.android.com/reference/android/app/Activity.html#StartingActivities)'PICK_CONTACT_REQUEST'是一個暗示爲'public'的字段變量,它也是靜態的final'。 – Sam

0

通過使用自定義方法(如public void setEditText(EditText myEditText),或類似的東西)或作爲其構造函數中的參數(取決於您的情況)將EditText對象提供給「其他類」。

另一種可能性是發送定義EditText的完整Activity,因此您可以使用findViewById()來獲取EditText。但我不會推薦它(不好的做法,我認爲),除非你有很多需要訪問的對象。

0

我有這個相同的問題。我的代碼在我的活動中有太多的代碼,我想創建外部類來完成那裏的一些處理。但是,一個過程包括使用EditText,並且不能在沒有UI的類中實例化該過程。因此,最簡單的解決方案是在活動中製作EditText myEditText變量publicstatic,然後在外部類中使用它時,只需使用點符號與原始活動來源,並且它應該可以工作。 static關鍵字是什麼使其成爲一個全局變量,可以被其他類/活動訪問。

public static EditText myEditText; //把這個在您的活動

ActivityName.myEditText.someMethod(); //使用的EditText在你的外部類