处理听众

时间:2011-09-29 13:12:41

标签: android

我知道听众应该让生活变得更轻松,特别是在像android这样的多任务环境中,但有时候(对我而言)它会让事情变得更难。

现在我有一个ExpandableList活动,它显示了一个事件列表,我希望用户选择一个组&感兴趣的孩子,并选择当该事件发生时将播放的通知声音。所以列表已设置完毕,我设置了setOnChildClickListener,它运行我的SetRingtone方法:

protected void SetRingtone(int groupPosition, int childPosition) {
  Intent intent = new Intent( RingtoneManager.ACTION_RINGTONE_PICKER);
  intent.putExtra( RingtoneManager.EXTRA_RINGTONE_TYPE, 
    RingtoneManager.TYPE_ALL);
  intent.putExtra( RingtoneManager.EXTRA_RINGTONE_TITLE, 
    "Select Tone");
  startActivityForResult( intent, PICK_NOTIFICATION_SOUND); 
}

这样该方法可以访问选定的组和子位置。问题是要从铃声选择器中选择铃声,你必须设置另一个lister,onActivityResult:

protected void onActivityResult(int requestCode, 
    int resultCode, Intent data) {
  if (resultCode == RESULT_OK) {
    Uri uri = 
     data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
    if (uri != null) {
      String ringTonePath = uri.toString();
      ExpandableListView variableView = 
      (ExpandableListView)findViewById(android.R.id.list);
      int p = variableView.getSelectedItemPosition();
      Log.d("phca", "The selected item number was: " + 
      p + "; The sound selected is: " + uri );
    }
  }
}

现在我无法访问所选的组和孩子。正如你所看到的,我试图从getSelectedItemPosition获取位置,但它总是在这里返回-1。

我知道我可能比现在更努力。

2 个答案:

答案 0 :(得分:0)

您可以在调用startActivityForResult之前将组和子项存储在实例变量中,然后在onActivityResult中使用这些实例变量。

答案 1 :(得分:0)

您是否尝试使用variableView.getSelectedItem()? 如果这返回null,则表示列表出现问题

相关问题