0

首先,我很抱歉,因为我仍然是 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();



}

}

控制器.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)做一些事情,而无需将其写入主活动类。

4

1 回答 1

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/

于 2013-06-05T02:44:08.650 回答