2010-07-07 2 views
1

Так что я могу показать СЕЛЕКТОН активность контактов Андроида по телефонуВызов PICK_CONTACT Намерения не от активности

startActivityForResult(intent, PICK_CONTACT); 

и я могу получить выбранный контакт переопределив onActivityResult

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

Trouble является onActivityResult доступно только когда я сам звоню из Занятия. Если я нахожусь в DialogPreference, например, как бы получить доступ к выбранному контакту, потому что у меня нет onActivityResult для переопределения?

ТИА

Pat Long

ответ

0

Я знаю, что вы хотите создать собственный DialogPreference для Pick a Contact, как предлагается в другой вопрос, вы действительно должны начать намерение, чтобы выбрать контакт и получить результат.

Я вижу, вам нужно создать частный класс, который расширяет Activity в вашем собственном классе DialogPreference. И вы будете использовать этот класс и onActivityResult.

Вы отлично справляетесь, продолжайте хорошую работу.

+0

OK Итак, у меня было некоторое время сегодня, чтобы взглянуть на это, и я получаю исключение NullPointerException после запуска «startActivityForResult (намерение, PICK_CONTACT)»; Просто хочу, чтобы бежать от вас мой подход Новый класс ContactPreference extends Предпочтение. Новый класс PickContactActivity extends Activity ContactPreference добавляет кнопку в свой макет при щелчке, который вызывает метод в экземпляре PickContactActivity. Метод в PickContactActivity вызывает startActivityForResult (намерение, PICK_CONTACT); Этот вызов завершается с ошибкой NullPointerException. Это то, что вы ожидаете? –

+0

Можете ли вы выяснить, что в то время было нулевым, возможно, ваше намерение или что-то еще? – Pentium10

+0

Уже проверено, ничего очевидного. Цель, которая заканчивается gettign до , startActivityForResult выглядит так в Eclipse «Intent {act = android.intent.action.PICK dat = content: // contacts/people}» Стол вызовов представляет строку 2661 отчетов в startActivityForResult –

1

Итак, я знаю, что эта проблема устарела и на нее был дан ответ, но у меня были те же проблемы, о которых упоминалось в комментариях. У меня возникла проблема с попыткой запустить ACTION_GET_CONTENT из класса I, полученного из Preference. Используя предложение 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 предложил частный класс в вашем классе предпочтений, но когда я попробовал это, Android не смог его создать. Кроме того, не забудьте добавить свою «суррогатную деятельность» к вашему манифесту.

Смежные вопросы