首先,我很抱歉,因为我还是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 :(得分: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中,一个Activity更有可能扮演控制器的角色,而editText(以及任何其他视图)则是显示内容的简单哑视图。以下是一些关于如何在Android中执行控制器/视图功能的非常好的文章:
http://www.therealjoshua.com/2011/11/android-architecture-part-1-intro/
http://mindtherobot.com/blog/675/android-architecture-message-based-mvc/