2011-07-10 3 views
1

私は、このアクティビティにバンドルで転送したアイテムを含むリストビューを作成します。私はこれで完全に新しいので、私はどのように考えていない。私がそれらを配置するとき、「変数に解決することはできません」Android transfer bundlesとplaceviewオブジェクトをリストビューに入れます

public class Viewer extends ListActivity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    super.onCreate(savedInstanceState); 
    Bundle b = getIntent().getExtras(); 
    final String name = b.getString("name"); 
    Bundle a = getIntent().getExtras(); 
    final String number = a.getString("number"); 

    setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, DETAILS)); 
    ListView lv = getListView(); 
    lv.setTextFilterEnabled(true); 
    lv.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) { 
     // When clicked, show a toast with the TextView text 
     Toast.makeText(getApplicationContext(), ((TextView) view).getText(), 
      Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 
static final String[] DETAILS = new String[] { 
    name, number 
    }; 
} 

が、私は、文字列「名前」と「番号」のリストにあることをしたいが、私はエラーを取得:私はこれまでのところだところです

static final String[] DETAILS = new String[] { 
    name, number 
    }; 
} 

答えて

0

クラスがロードされるとき静的最終列[]詳細を作成することが。しかし、final String name = b.getString( "name");は、後でonCreate()が呼び出されたときに実行されます。

これは動作するはずです:

static String[] DETAILS; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    super.onCreate(savedInstanceState); 
    Bundle b = getIntent().getExtras(); 
    final String name = b.getString("name"); 
    Bundle a = getIntent().getExtras(); 
    final String number = a.getString("number"); 


    DETAILS = new String[] {name, number}; 

    setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, DETAILS)); 
    ListView lv = getListView(); 
    lv.setTextFilterEnabled(true); 
    lv.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) { 
     // When clicked, show a toast with the TextView text 
     Toast.makeText(getApplicationContext(), ((TextView) view).getText(), 
      Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 
+0

感謝に答えるために。それは理にかなっていますが、私はFCを取得...私は明らかにArrayAdapterでNullPointerExceptionを取得します。何か案が? – bernlim

+0

もし私が変更したらDETAILS = new String [] {name、number}; DETAILS = new String [] {"something"};になります。したがって、DETAILS配列へのデータの転送には問題がありますか? – bernlim

+0

はい。 a.getString(xy)がnullを返すと、ArrayAdapterはDETAILS配列のヌル値のためにNullPointerExceptionを作成します。 – thaussma

関連する問題