0

アダプターで機能する 1 つの列を含むリストがあり、機能しました。今、私はそれを 2 つの列にしようとしていますが、例外が発生しています。

私はこのチュートリアルに従っていますが、これは最も簡単なようです:

次のように宣言する Java アクティビティがあります。

public class SeeAllQuestionsActivity extends ListActivity

ここに少しのコードがあります:

@Override
public void onCreate(Bundle savedInstanceState) 
{
super.onCreate(savedInstanceState);
    FlurryAgent.onStartSession(this, "8CA5LTZ5M73EG8R35SXG");

    setContentView(R.layout.all_question_page);
...

ここに all_question_page xml があります

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="3px"
        >

<include android:id="@+id/header"
         layout="@layout/header"
         android:layout_height="wrap_content"
         android:layout_width="fill_parent"/>    

<TextView
    android:id="@+id/loading_questions" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Some prompt text."
    android:textSize="10sp"
    />

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="@+id/label"
        android:textSize="20px" >        
    </ListView>
</LinearLayout>

ところで、誰かがリスト ID を参照するための 2 つの構文の違いを説明してくれれば、それは素晴らしいことです:

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

参考までに、これらのどちらも私のために働いていません:)

そして、ここに question_list.xml レイアウトがあります

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:paddingTop="4dip"
     android:paddingBottom="6dip"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:orientation="horizontal">

     <TextView android:id="@+id/TRAIN_CELL"
         android:layout_width="50dip"
         android:layout_height="wrap_content"/>

     <TextView android:id="@+id/FROM_CELL"
         android:layout_width="70dip"
         android:layout_height="wrap_content" android:layout_weight="1"/>

     <TextView android:id="@+id/TO_CELL"
         android:layout_width="60dip"
         android:layout_height="wrap_content"  android:layout_weight="1"/>
</LinearLayout>

これをシミュレーターで実行すると、次の行について不平を言うランタイム例外が発生してクラッシュしますsetContentView(R.layout.all_question_page);。エラーは次のとおりです。

 java.lang.RuntimeException: 
Your content must have a ListView whose id attribute is 'android.R.id.list'

助けてください、私はかなり立ち往生しています

ありがとうございました!!

4

1 に答える 1

1

違いは、前者は ListActivity を使用するために使用する必要があるものであり、後者は ListActivity を使用しない場合に使用するものであり、代わりに通常のアクティビティであることです。だからあなたは固執する必要があります。(注: 私は個人的に ListActivity を使用したことがないので、これを正確に保証することはできません)

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

ListView からこれらの行も削除することをお勧めします。

android:text="@+id/label"
android:textSize="20px"

text も textSize もListViewの有効な属性ではありません。そして、テキストが有効な属性であるウィジェットの場合、テキストを のようなものに設定したいとは思わないでしょう"@+id/label"。string.xml ファイルから文字列を参照しようとしている場合は、"@string/label". テキストに対してそのような ID を参照すると、ユーザーにとって意味のない 16 進コードがテキストに挿入されます (まったく機能する場合)。

それらを削除すると問題が解決する可能性があります。そうであれば、テキストを別の ID に設定すると、リストに ID がないと考えるように混乱させた可能性があります。list

それでも問題が解決しない場合は、ListActivity の代わりにプレーンなアクティビティに切り替えて、findViewById()リンクした例のように ListView への参照を取得することをお勧めします。

于 2012-07-24T00:52:44.343 に答える