2011-09-29 78 views
2

我知道听众应该会让生活更轻松,尤其是在像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); 
} 

所以该方法可以访问选定组和儿童的位置。问题是,要获得从铃声选择器选择的铃声,你必须建立另一个利斯特,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。

我知道我可能比实际上更难。

回答

0

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

0

您是否尝试过使用variableView.getSelectedItem()? 如果返回null,则表示您的清单有问题