2012-11-13 2 views
1

버튼을 클릭 할 때 소리를 내고 싶습니다. 목록보기에서 항목을 선택한 경우 listview, singlelistitem 열린 레이아웃으로 사운드를 나열하고, 다른 목록에서 버튼을 클릭합니다. 내가 클릭하면 응용 프로그램 덕분에listview에서 미디어 플레이어 문제가 발생했습니다.

AndroidListViewActivity.class

SingleListItem.class (목록 선택 항목에 대한) (선택한 항목을 표시합니다)

버튼 클릭, 어디에 문제가, 작동하지 않는, 닫는 (SingleListItem 레이아웃에서 선택한 사운드가 재생 됨)

로그 캣 메시지 :

11-11 16:18:09.285: E/dalvikvm(17161): VM aborting 
11-11 16:18:09.285: A/libc(17161): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1) 

AndroidListViewActivity 클래스;

public class AndroidListViewActivity extends ListActivity { 
    int [] sounds; 
MediaPlayer mediaPlayer; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
sounds= new int[] {R.raw.sound1,R.raw.sound2,R.raw.sound3,R.raw.sound4,R.raw.sound5};   

    // storing string resources into Array 
    String[] sounds= getResources().getStringArray(R.array.sounds);   
    // Binding Array to ListAdapter 
    this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.label, sounds)); 

    ListView lv = getListView(); 

    // listening to single list item on click 
    lv.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) {  

      // selected item 
      String selectedsound= ((TextView) view).getText().toString(); 
      String selectedFromList = getItemAtPosition(position); 

      @SuppressWarnings("unused") 
      int resId = getResources().getIdentifier(selectedFromList, "raw", getPackageName()); 

    // Launching new Activity on selecting single List Item 
      Intent i = new Intent(getApplicationContext(), SingleListItem.class); 
      Intent intent = new Intent(getApplicationContext(), SingleListItem.class); 
      // sending data to new activity 
      i.putExtra("selectedsound", selectedsound); 
      intent.putExtra("position", position); 
      startActivity(i); 
      startActivity(intent);    
     } 

    private String getItemAtPosition(int position) { 
     // TODO Auto-generated method stub 
     return null; 
    } 
    }); 
} 
} 

SingleListItem 클래스;

public class SingleListItem extends Activity{ 

int [] sounds; 
MediaPlayer mediaPlayer; 

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

    sounds= new int[] {R.raw.sound1,R.raw.sound2,R.raw.sound3,R.raw.sound4,R.raw.sound5}; 

      this.setContentView(R.layout.single_list_item_view); 

    TextView txtProduct = (TextView) findViewById(R.id.product_label); 

    Intent i = getIntent(); 

    Intent intent = getIntent(); 

    // getting attached intent data 
    String product = i.getStringExtra("selectedsound"); 

    int position = intent.getExtras().getInt("position"); 
    // displaying selected sound 
    txtProduct.setText(selectedsound); 
    mediaPlayer = MediaPlayer.create(this, sounds[position]); 
    Button b = (Button) findViewById(R.id.button1); 
    b.setOnClickListener(new View.OnClickListener(){ 

    public void onClick(View arg0) {        
    mediaPlayer.start(); 
    //start the progress dialog 
    } 
    }); 
}  
} 

답변

0

당신이 그것을에 Null 전달되기 때문에 resId (당신이 이미 그것을 사용하지 않는) 제거

String selectedFromList = getItemAtPosition(position); 

int resId = getResources().getIdentifier(selectedFromList, "raw", getPackageName()); 

private String getItemAtPosition(int position) { 
    // TODO Auto-generated method stub 
    return null; 
}