我是Android编程新手,以下程序是我的第一个Android应用程序
我的.java
文件
public class MainActivity extends Activity
{
Button btn = (Button) findViewById(R.id.btn);
private OnClickListener btn_click = new OnClickListener() {
public void onClick(View v) {
btn.setText("Hi there!");
}
};
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
btn.setOnClickListener(btn_click);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
我的.XML
文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="My Button" />
</RelativeLayout>
我希望一旦点按按钮My Button
,它的文字就会变为“你好!”。但是当我的应用程序要在模拟器中运行时,它会中断并弹出一条消息:
应用程序testapp_1(进程com.example.testapp_1)意外停止
我的错误是什么?以及如何修复它们?
答案 0 :(得分:4)
在setContentView
之后移动初始化。
Button btn;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.btn); // initalize button after setContentView
btn.setOnClickListener(btn_click);
}
您需要先将内容设置为活动,然后初始化您的视图。您在onCreate
之外进行了初始化。你会得到NullPointerException
。您可以findViewById
将当前视图层次结构设置为活动。