当流程到达那里时,代码崩溃。为什么?提前谢谢。
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//erroneous code block starts
Button returnButton = (Button)findViewById(R.id.imgReturn);
returnButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0) {
finish();
}
});
//erroneous code block ends
setContentView(R.layout.activity_travel);
}
以下是* activity_travel *中标识的 imgReturn 的定义:
<ImageView android:id="@+id/imgReturn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/ic_menu_revert" android:contentDescription="@string/button_name_return" />
答案 0 :(得分:1)
Button returnButton = (Button)findViewById(R.id.imgReturn);
xml布局中有ImageView
而非Button
。
应该是
ImageView iv = (ImageView) findViewById(R.id.imgReturn);
初始化应该在
之后setContentView(R.layout.activity_travel);
作为
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_travel);
// initialization after setContentView
ImageView returnButton = (ImageView)findViewById(R.id.imgReturn);
findViewById
在当前膨胀的布局中查找id为id的视图。首先,您需要使用setContentView(R.layout.activity_travel)
将布局设置为活动。然后初始化视图。你所拥有的是xml中的ImageView
,但你在初始化时将它投射到Button。
答案 1 :(得分:0)
使用以下代码:
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//erroneous code block starts
setContentView(R.layout.activity_travel);
ImageView returnButton = (ImageView)findViewById(R.id.imgReturn);
returnButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0) {
finish();
}
});
//erroneous code block ends
}
首先:你没有按钮
第二:setContentView
必须低于super.onCrete()
答案 2 :(得分:0)
你需要在“super.onCreate”之后放置“setContentView”。 设置内容视图将设置膨胀您的类的xml文件。您无法使用UI设置您将使用的xml文件。