我是Android新手。我正在编写简单的代码,根据带按钮的EditText更改TextView。我的代码没有错误。但是当我从一台设备上执行它时,我会接近一个力量。
这是我的代码:
public class MainActivity extends Activity {
//EditText et = (EditText)findViewById(R.id.editText1); << Error if uncomment
//TextView tv = (TextView)findViewById(R.id.textView1); << Error if uncomment
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
答案 0 :(得分:2)
您不能使用findViewById()
来初始化类变量
public class MainActivity extends Activity {
EditText et;
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// move these here
et = (EditText)findViewById(R.id.editText1);
tv = (TextView)findViewById(R.id.textView1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
如果您考虑一下,布局只会在调用setContentView
后初始化,因此您无法在初始化之前找到该布局中的元素,甚至可以将其设置为活动的布局。
答案 1 :(得分:0)
继续明确始终查看LogCat
内容并发布您的问题
试试这个:
public class MainActivity extends Activity {
// You can use findViewById only once the activity has finished creating, so move the initialization to onCreate function
EditText et;
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et = (EditText)findViewById(R.id.editText1);
tv = (TextView)findViewById(R.id.textView1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
您可以打开LogCat
之类的:
单击圆圈标记的按钮(位于Eclipse右下角)
如果你没有,可以像以下一样提出来:
P.S:我正在使用mac,但对于其他操作系统应该是相同的
答案 2 :(得分:-1)
记住一件事。在致电findViewById
后,请始终致电setContent
,否则会出现此类错误。