android findViewById

群居的山羊 2016-10-11 12:33:09
在制作注册界面时发现一个奇怪的问题public class MainActivity extends AppCompatActivity {
EditText a =(EditText) findViewById(R.id.xingming);
EditText b =(EditText) findViewById(R.id.mima);
Button zhuce = (Button) findViewById(R.id.zhuce);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
a=(EditText) findViewById(R.id.xingming);
b =(EditText) findViewById(R.id.mima);
zhuce = (Button) findViewById(R.id.zhuce);

zhuce.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {
if(input()) {
Intent intent = new Intent();
intent.setClass(MainActivity.this, nnn.class);
startActivity(intent);
finish();
}
else {
Toast.makeText(MainActivity.this, "请输入", Toast.LENGTH_SHORT).show();
}
}
});
}
private boolean input(){
String d=a.getText().toString();
String x=b.getText().toString();
if(d.equals("")||x.equals(""))
return false;
else
return true;
}

}

这么写的程序一打开就会停止运行
但是把findViewById放到onCreate方法中就没有问题了

public class MainActivity extends AppCompatActivity {
EditText a;
EditText b;
Button zhuce;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
a=(EditText) findViewById(R.id.xingming);
b =(EditText) findViewById(R.id.mima);
zhuce = (Button) findViewById(R.id.zhuce);

zhuce.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {
if(input()) {
Intent intent = new Intent();
intent.setClass(MainActivity.this, nnn.class);
startActivity(intent);
finish();
}
else {
Toast.makeText(MainActivity.this, "请输入", Toast.LENGTH_SHORT).show();
}
}
});
}
private boolean input(){
String d=a.getText().toString();
String x=b.getText().toString();
if(d.equals("")||x.equals(""))
return false;
else
return true;
}

}
所以我想问一下findViewById使用时有什么限制么?
...全文
223 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
LoveWyf_ 2016-10-12
  • 打赏
  • 举报
回复
必须放setContentView(R.layout.activity_main)后面
answer艾 2016-10-12
  • 打赏
  • 举报
回复
萌萌哒啊 真哒
ink_s 2016-10-11
  • 打赏
  • 举报
回复
萌萌萌
群居的山羊 2016-10-11
  • 打赏
  • 举报
回复
引用 1 楼 tcmakebest的回复:
你傻呀, 没有 setContentView(R.layout.activity_main); 前怎么可能找得到控件?
额,你说的太对了,谢谢
tcmakebest 2016-10-11
  • 打赏
  • 举报
回复
你傻呀, 没有 setContentView(R.layout.activity_main); 前怎么可能找得到控件?
developerzjy 2016-10-11
  • 打赏
  • 举报
回复
要把view所在的布局加载之后才能find
金大哈 2016-10-11
  • 打赏
  • 举报
回复
正如2楼所说 必须要经过这个 setContentView(R.layout.activity_main); 才能设置findViewById

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧