当我使用如下的EditText字段时,我得到了您的应用已停止的错误,控制台错误“频道无法恢复并将被处理”
public class SignupActivity extends ActionBarActivity {
EditText name = (EditText) findViewById(R.id.name);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
Intent resign = getIntent();
}
public void signUp() {
String tname = name.getText().toString();
}
}
当我将课程更改为
时,它工作正常public class SignupActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
Intent resign = getIntent();
}
public void signUp() {
EditText name = (EditText)findViewById(R.id.name);
String tname = name.getText().toString();
}
}
当我使用上述代码时为什么它不起作用,请帮助,谢谢提前
答案 0 :(得分:1)
您的密码:
EditText name = (EditText) findViewById(R.id.name);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
Intent resign = getIntent();
}
你应该做什么:
public class SignupActivity extends ActionBarActivity {
EditText name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
name = (EditText)findViewById(R.id.name);
Intent resign = getIntent();
}
}
答案 1 :(得分:1)
您需要了解一件事,在您调用OnCreate之前,您在与您的活动相关联的XML文件中声明的小部件无法使用
"setContentView(R.layout.activity_signup)" , you are trying to make it as member variable which will try to get them initialize even before onCreate is called, and hence the error.
答案 2 :(得分:1)
您在findViewById()
之前过早地致电onCreate()
。它会NPE,因为还没有找到Window
的视图。
通常,您不应在onCreate()
之前调用任何活动方法。
findViewById()
的正确位置为onCreate()
或更晚,以便有Window
,setContentView()
之后可以找到实际可以找到的内容。
答案 3 :(得分:1)
这里是在调用setContentView(R.layout.activity_signup);
之前初始化编辑文本
方法
答案 4 :(得分:1)
移动此
EditText name = (EditText)findViewById(R.id.name);
后
setContentView(R.layout.activity_signup);