【问题标题】:Android can not get the layout [duplicate]Android无法获取布局[重复]
【发布时间】:2014-07-16 12:46:30
【问题描述】:

我是 Android 新手。当我运行我的项目时,出现以下错误:

Your content must have a ListView whose id attribute is 'android.R.id.list'

它迷恋这条线:

 setContentView(R.layout.activity_main); 

我的 activity_main.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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.soft8.sql_test.MainActivity" >

    <ListView
        android:id="@+id/TheClient"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
    </ListView>

</RelativeLayout>

和主类:

public class MainActivity extends ListActivity {

    private ArrayList results = new ArrayList();
    SQLController   dbcon;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 

        final ListView lv1 = (ListView) findViewById(R.id.TheClient);


        dbcon = new SQLController(this);
        dbcon.open();

        dbcon.insertSomeItmes(); 
        results = (ArrayList) dbcon.ReadData();
        lv1.setAdapter(new CustomListAdapter(this, results));


        dbcon.close();

    }

谢谢。

【问题讨论】:

    标签: java android android-layout android-activity android-listview


    【解决方案1】:

    改变这个

    android:id="@+id/TheClient"
    

    android:id="@android:id/list"
    

    不需要ListView 转换它,因为已经用ListActivity 扩展了你的Activity

    同时删除

    final ListView lv1 = (ListView) findViewById(R.id.TheClient);
    

    使用

    直接设置适配器
    setListAdapter(new CustomListAdapter(this, results));
    

    【讨论】:

      【解决方案2】:

      当您从ListActivity 扩展您的活动时,您无需再次定义您的列表。 ListActivity 自动在为其设置的布局中查找 ID 为“list”的ListView。如果它没有找到 ID 为“list”的ListView,则会给出您的错误。

      所以改变

      android:id="@+id/TheClient"
      

      android:id="@android:id/list"
      

      并从活动中删除列表的定义。 (删除 findViewById 行)

      或者只是扩展普通的 Activity 而不是 ListActivity。

      【讨论】:

        【解决方案3】:

        一个潜在的错误将来自您在 id 中使用大写的事实

        android:id="@+id/TheClient"
        

        试试小写

        android:id="@+id/the_client"
        

        【讨论】:

          【解决方案4】:

          重命名 ListView 的 id

           android:id="@+id/TheClient"
          

          android:id="@android:id/list"
          

          由于您使用的是ListActivity,因此您的 xml 文件必须在提及 ID 时指定关键字 android

          并删除

          final ListView lv1 = (ListView) findViewById(R.id.TheClient);
          

          来自活动代码。

          即只需将代码重写为

           @Override
              protected void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.activity_main); 
          
          
          
                  dbcon = new SQLController(this);
                  dbcon.open();
          
                  dbcon.insertSomeItmes(); 
                  results = (ArrayList) dbcon.ReadData();
                  setAdapter(new CustomListAdapter(this, results));
          
          
                  dbcon.close();
          
              }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-11-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多