2

配列をリストビューにロードしています。リスト項目をクリックすると、同じアクティビティ内のテキストビューに項目が表示されます。リストは現在ロード中ですが、項目をクリックするとプログラムがクラッシュします。なぜ何か考えはありますか?

import java.util.ArrayList;
import android.app.ListActivity;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class WordList extends ListActivity {
    /**
     * @see android.app.Activity#onCreate(Bundle)
     * 
    */
    //public final static String TERM_EXTRA="com.myapp._word";
    //public final static String DEF_EXTRA="com.myapp._pic";

    TextView selection;
    ArrayList<String> words=new ArrayList<String>();


    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        selection=(TextView)findViewById(R.id.selection);
        Resources res=getResources();
        String[] words = res.getStringArray(R.array.words);
        setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,words));
    }

    public void onListItemClick(ListView parent, View v, int position,long id) {
        selection.setText(words.get(position).toString());
    }
}
4

1 に答える 1

3

words.get(position).toString()このように宣言された ArrayList である「単語」にオブジェクトを追加しなかった場合、null を返すためです。

ArrayList<String> words=new ArrayList<String>();

"String[] words"で使用しているものではありませんがonListItemClick"ArrayList<String> words"です。

編集:

arraylist にコメントを付け、onCreate の外側で「String[] words」を定義します。

//ArrayList<String> words=new ArrayList<String>();
String[] words;

次に、onListItemClick で;

selection.setText(words[position]);

そして、あなたは行ってもいいです。

于 2012-08-19T16:19:46.073 に答える