单击按钮转到Android上的ListActivity

时间:2011-11-27 15:58:28

标签: android button android-intent listactivity extends

我有一个按钮,这是代码:

Button bHotel = (Button)findViewById(R.id.bHotel);
    bHotel.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent intent = new Intent(MainMenu.this, HotelList.class);
            startActivity(intent);

        }
    });

如果我点击该按钮,我的目的是:

public class HotelList extends ListActivity{
........    
        }

我的问题是为什么我的应用程序意外停止了,但是如果我将扩展名更改为Activity而不是ListActivity,那么它运行得很好。

在清单中,我将HotelList类注册为活动

<activity android:name=".HotelList" android:label="@string/app_name" />

知道它为什么不起作用?

3 个答案:

答案 0 :(得分:1)

如果是ListActivity,则无需setContentView(R.layout.xml_file_name);。我认为你在上面的HotelList类中用作setContentView(R.layout.xml_file_name);。删除它将起作用的行。

来自documentation 屏幕布局

ListActivity具有默认布局,该布局由屏幕中心的单个全屏列表组成。但是,如果需要,可以通过在onCreate()中使用setContentView()设置自己的视图布局来自定义屏幕布局。要做到这一点,你自己的视图必须包含一个带有id&#34; @android:id / list&#34;的ListView对象。 (或列出代码中的代码)

答案 1 :(得分:0)

您是否在第二个活动中使用了setContentView方法?如果是这样,因为您的活动扩展了ListActivity,那么您也是如何填充列表的呢?我认为你声明ListView的id的方式存在问题,它必须是“@ android:id / list”否则它将无效。

答案 2 :(得分:0)

如果您使用自己的布局,ListActivity需要布局内的ID为"@android:id/list"的ListView。确保在布局中声明了ListView,并且该ListView的id为“@android:id / list”