Domanda

Quindi posso visualizzare l'attività del contatto selecton di Android chiamando

startActivityForResult(intent, PICK_CONTACT); 

e posso ottenere il contatto selezionato sovrascrivendo onActivityResult

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

Il problema è che onActivityResult è disponibile solo quando sto chiamando da un'attività me stesso. Se io sono in un DialogPreference per esempio come potrei arrivare al contatto selezionato, perché non ho un onActivityResult alla sostituzione?

TIA

Pat lungo

È stato utile?

Soluzione

So che si desidera creare un DialogPreference personalizzato per scegliere un contatto come proposto nella altra domanda, è infatti necessario avviare l'intento di raccogliere il contatto e ottenere il risultato.

vedo è necessario creare una classe privata che si estende attività nella propria classe DialogPreference. E che si intende utilizzare quella classe e l'onActivityResult.

Si sta facendo un ottimo lavoro, mantenere il buon lavoro.

Altri suggerimenti

So che questo problema è vecchio ed è stato risposto, ma ho avuto gli stessi problemi menzionati nei commenti. Ho avuto questo problema cercando di lanciare un ACTION_GET_CONTENT intento da una classe I derivato da Preferenze. Utilizzando il suggerimento di Pentium10, ho creato una nuova classe derivata da attività per lanciare l'intento e afferrare il risultato. Ho chiamato questa classe SurrogateActivity e sembra che questo:

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();
}

}

Nella mia classe Preferenze personalizzato, ho voluto il selettore al lancio quando l'uso rubinetti la preferenza. Ho impostato onClick () per lanciare la mia classe SurrogateActivity che poi a sua volta lancia l'ho davvero bisogno intento nel suo metodo onCreate.

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

Pentium10 suggerito una classe privata all'interno della vostra preferenza, ma quando ho provato questo, Android non poteva un'istanza. Inoltre, ricordarsi di aggiungere il "attività surrogata" al tuo manifesto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top