2010-07-07 68 views
1

這樣我就可以通過調用調用PICK_CONTACT從活動意圖不

startActivityForResult(intent, PICK_CONTACT); 

顯示Android的聯繫人選擇中活動,我可以通過重寫onActivityResult

public void onActivityResult(int reqCode, int resultCode, Intent data) { 
    super.onActivityResult(reqCode, resultCode, data); 
} 

惹上麻煩選定的聯繫人是onActivityResult僅適用當我從活動中自己打電話時。如果我在DialogPreference中,例如我將如何獲得所選聯繫人,因爲我沒有要覆蓋的onActivityResult?

TIA

帕特龍

回答

0

我知道你想創建一個自定義DialogPreference到Pick a Contact如其他問題提出的,你確實需要啓動意圖挑接觸並得到結果。

我看到您需要創建一個在您自己的DialogPreference類中擴展Activity的私有類。你將使用該類和onActivityResult。

你做得很好,保持良好的工作。

+0

OK所以我今天有一段時間來看看這個,並且在觸發「startActivityForResult(intent,PICK_CONTACT);」之後得到一個NullPointerException異常「 只想由你運行我的方法 新類ContactPreference擴展了首選項。 新類PickContactActivity擴展Activity ContactPreference在其佈局中添加一個按鈕,當點擊時調用PickContactActivity實例上的方法。 PickContactActivity中的方法調用startActivityForResult(intent,PICK_CONTACT);此調用失敗,並返回NullPointerException。這種方法是你可能期望的嗎? – 2010-07-09 09:12:39

+0

你能弄清楚當時什麼是空的,可能是你的意圖還是別的? – Pentium10 2010-07-09 11:09:24

+0

已經勾選,沒什麼明顯的。 startActivityForResult在Eclipse中看起來像這樣:「Intent {act = android.intent.action.PICK dat = content:// contacts/people}」 調用堆棧在startActivityForResult中報告第2661行 – 2010-07-09 12:51:41

1

所以我知道這個問題已經老了,已經回答了,但我在評論中提到了同樣的問題。我遇到了這個問題,試圖從I偏愛派生的類中啓動ACTION_GET_CONTENT意圖。使用Pentium10的建議,我創建了一個派生自Activity的新類,以啓動該意圖並獲取結果。我叫這個類SurrogateActivity,它看起來像這樣:

public class SurrogateActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstance){ 
    super.onCreate(savedInstance); 
    Intent chooseFileIntent = new Intent(); 
    chooseFileIntent.setAction(Intent.ACTION_GET_CONTENT); 
    // In my case I need an audio file path 
    chooseFileIntent.setType("audio/*"); 
    startActivityForResult(chooseFileIntent, 0); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if(resultCode == RESULT_OK){ 
     Uri audioPath = data.getData(); 
     // Use SharedPreferences.Editor to update preference value 
     SharedPreferences.Editor prefsEditor = PreferenceManager.getDefaultSharedPreferences(this).edit(); 
     prefsEditor.putString(Keys.PREF_ALERT, audioPath.toString()); 
     prefsEditor.commit(); 
    } 
    // finish this "hidden" activity on any result 
    finish(); 
} 

}

在我的自定義偏好類,我想要的選擇器時使用水龍頭偏好推出。我設置onClick()來啓動我的SurrogateActivity類,然後依次啓動我在onCreate方法中真正需要的意圖。

@Override 
protected void onClick(){ 
    super.onClick(); 
    Intent launchHiddenActivity = new Intent(getContext(), SurrogateActivity.class); 
    getContext().startActivity(launchHiddenActivity); 
} 

Pentium10在您的Preference類中提出了一個私有類,但是當我嘗試這樣做時,Android無法實例化它。另外,請記住將您的「代理活動」添加到您的清單。