簡體   English   中英

與聽眾打交道

[英]Dealing with Listeners

我知道聽眾應該讓生活更輕松,尤其是在像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。

我知道我可能會比實際做起來困難。

您可以在調用startActivityForResult之前將組和子級存儲在實例變量中,然后在onActivityResult中使用這些實例變量。

您是否嘗試使用variableView.getSelectedItem()? 如果此返回null,則表示您的列表有問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM