2013-06-05 20 views
0

首先,由於我仍然是Android開發的初學者,所以我的道歉。 我的問題:我可以使用不同的類訪問視圖嗎?例如,這是我的主要活動代碼:與創建不同類的Android訪問視圖

(XML)

<EditText 
    android:id="@+id/something_dummy" 
    android:layout_width="match_parent" 
    android:layout_height="50dip" 
    /> 

(JAVA)

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Controller controller = new Controller(); 
    controller.setEmptyEditText(); 



} 

} 

Controller.java

import android.app.Activity; 
import android.widget.EditText; 

public class Controller extends Activity { 

public Controller() { 
    // TODO Auto-generated constructor stub 
} 

public void setEmptyEditText(){ 
    EditText et = (EditText) findViewById(R.id.something_dummy); 
    et.setText(""); 
} 

}

當我運行這個應用程序,我得到一個錯誤和崩潰。 我想知道我是否可以對視圖進行處理(在本例中爲editText),而無需將其寫入主活動類。

+0

你到底要在其他視圖做什麼? – verybadalloc

+0

對於這個例子,我想從其他類中清空edittext視圖。 – yozawiratama

+0

檢查答案,並讓我知道它是否有幫助。 – verybadalloc

回答

0

是的,您可以從mainActivity類的外部訪問視圖。但是,這取決於你想要做什麼。例如,你可以定義一個自定義的editText(比如說,你需要一個可以用一個函數調用來清空的editText)。現在

public class myEditText extends EditText{ 
    public myEditText(Context context){ 
    super(context); 
    } 

    public myEditText(Context context, AttributeSet attrs){ 
    super(context, attrs); 
    } 

    public myEditText(Context context, AttributeSet attrs, int defStyle){ 
    super(context, attrs, defStyle); 
    } 

    public setEditTextEmpty(){ 
    setText(""); 
    } 

,在你mainActivity,您可以訪問自定義EDITTEXT:

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    myEditText et = (myEditText) findViewById(R.id.something_dummy); 
    et.setEditTextEmpty(); 

} 

} 

在一個側面說明,在Android中,活動更容易發揮控制器的作用,而editText(以及其他任何視圖)都是簡單的愚蠢的視圖來顯示內容。下面是關於如何做控制器/視圖thinggy在Android中一些很不錯的文章:

http://www.therealjoshua.com/2011/11/android-architecture-part-1-intro/

http://mindtherobot.com/blog/675/android-architecture-message-based-mvc/