1

Android のプログラミングについて詳しく学ぶために、単純な ListView アプリを作成しています。

ただし、この単純なコード (Eclipse ではエラーはまったく表示されません) は、エミュレーターでの起動時に単純にクラッシュします。何か案は?

public class MainActivity extends Activity {

static final String[] FRUITS = { "Apple", "Avocado", "Banana",
    "Blueberry", "Coconut", "Durian", "Guava", "Kiwifruit",
    "Jackfruit", "Mango", "Olive", "Pear", "Sugar-apple" };

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_fruit);

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_fruit, FRUITS);

    ListView listView = (ListView) findViewById(R.layout.list_fruit);
    listView.setTextFilterEnabled(true);
    listView.setAdapter(adapter);



    listView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
        }
    });

}

}

list_fruit.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:padding="10dp"
     android:textSize="20sp" >
</TextView>

あなたの指示に従ってスタックトレースを見つけようとしましたが、唯一のメッセージはFATAL EXCEPTION: main.

4

4 に答える 4

2

これ:

 ListView listView = (ListView) findViewById(R.layout.list_fruit);

findViewById で検索する必要があるidため、たとえば次のようになりますが、その ID を持つ listview 要素があることを確認する必要があります。

 ListView listView = (ListView) findViewById(R.id.the_id_of_your_view);
于 2014-03-05T18:38:20.600 に答える
0

これを変える

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_fruit, FRUITS);

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, FRUITS);

あなたが持っている

setContentView(R.layout.list_fruit); // list_fruit.xml

で同じものを使用しますArrayAdapter

また変更

ListView listView = (ListView) findViewById(R.layout.list_fruit);

ListView listView = (ListView) findViewById(R.id.listview);

にも変更

Toast.makeText(getApplicationContext(),FRUITS[postion], Toast.LENGTH_SHORT).show();

編集: list_fruit.xmlListView がありません。

以下が必要ですlist_fruit.xml

<ListView 
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listview"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> 

次にonCreate

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_fruit);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, FRUITS);
ListView listView = (ListView) findViewById(R.id.listview);
listView.setTextFilterEnabled(true);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
          Toast.makeText(getApplicationContext(),FRUITS[postion], Toast.LENGTH_SHORT).show();
    }
});
}
于 2014-03-05T18:38:11.523 に答える
0

たとえば、これは間違っています。

ListView listView = (ListView) findViewById(R.layout.list_fruit);

それは次のようなものでなければなりません:

ListView listView = (ListView) findViewById(R.id.my_list_fruit);

my_list_fruit は、xml で割り当てられた android:id タグです。

<ListView
    android:id="@+id/my_list_fruit"
.../>
于 2014-03-05T18:39:02.987 に答える
0

android simple_list_view_1 を使用して、これを試してください

public class MainActivity extends Activity {

static final String[] FRUITS = { "Apple", "Avocado", "Banana",
"Blueberry", "Coconut", "Durian", "Guava", "Kiwifruit",
"Jackfruit", "Mango", "Olive", "Pear", "Sugar-apple" };

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_fruit);
ListView listView = (ListView) findViewById(R.id.list_fruit);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, FRUITS);


listView.setTextFilterEnabled(true);
listView.setAdapter(adapter);



listView.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
    }
});

}

}

または、textview を含む list_item.xml を定義します。例:

MainActivity.java

    public class MainActivity extends Activity {

static final String[] FRUITS = { "Apple", "Avocado", "Banana", "Blueberry",
        "Coconut", "Durian", "Guava", "Kiwifruit", "Jackfruit", "Mango",
        "Olive", "Pear", "Sugar-apple" };
private ListView listView;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_fruit);
    listView = (ListView) findViewById(R.id.list_fruit);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            R.layout.list_item, R.id.textView1, FRUITS);

    listView.setTextFilterEnabled(true);
    listView.setAdapter(adapter);

    listView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            Toast.makeText(getApplicationContext(),
                         listView.getItemAtPosition(position).toString(),
                    Toast.LENGTH_SHORT).show();
        }
    });

}}

list_fruit.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=".MainActivity" >

<ListView
    android:id="@+id/list_fruit"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true" >

</ListView>

</RelativeLayout>

list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >


<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text=""
    android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>
于 2014-03-05T19:07:49.437 に答える