2011-09-29 138 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,則表示您的清單有問題