Java 使用创建不同类的android access视图

Java 使用创建不同类的android access视图,java,android,xml,Java,Android,Xml,首先,我道歉,因为我还是Android开发的初学者。 我的问题:我可以使用其他类访问视图吗?例如,这是我的主要活动代码: (XML) Controller.java import android.app.Activity; import android.widget.EditText; public class Controller extends Activity { public Controller() { // TODO Auto-generated constructor

首先,我道歉,因为我还是Android开发的初学者。 我的问题:我可以使用其他类访问视图吗?例如,这是我的主要活动代码:

(XML)

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)进行某些操作,而无需将其写入主活动类。

是的,您可以从主活动类外部访问视图。然而,这实际上取决于你想做什么。例如,您可以定义自定义editText(例如,您需要一个editText,只需一次函数调用即可清空)

现在,在mainActivity中,您可以访问自定义编辑文本:

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(以及任何其他相关视图)是简单的哑视图,显示内容。以下是一些关于如何在Android中实现控制器/视图功能的非常好的文章:


您希望在其他视图中具体执行什么操作?在本例中,我希望从其他类中清空edittext视图。请检查答案,并告知是否有帮助。
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("");
}
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("");
  }
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();

}

}