Y es również stanąłem w obliczu tego problemu.
Wielu programistów również boryka się z problemami podczas przekazywania danych z okna dialogowego do innej aktywności poprzez zamiar lub pakiet. Zwraca wartość null w czasie pobierania z innej czynności.
Jedynym rozwiązaniem jest SharedPreferences.
Ale trzeba umieścić go wewnątrz przycisku zwolnieniu. (Ex: OK/Cancel etc)
i pobierać dane z innej działalności łatwo za pośrednictwem tego samego klucza. Nie używaj żadnych usług, po których następuje zamiana transmisji.
Kod aktywności dialogowym jest tak:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.mailicon);
builder.setTitle(name);
builder.setView(view);
builder.setPositiveButton("Send Request",new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
String mailID = id.getText().toString();
//Here define all your sharedpreferences code with key and value
SharedPreferences prefs = getSharedPreferences("my_prefs", MODE_PRIVATE);
SharedPreferences.Editor edit = prefs.edit();
edit.putString("MID", mailID);
edit.commit();
}
});
A z innej pobierać dane tak:
SharedPreferences bb = getSharedPreferences("my_prefs", 0);
String m = bb.getString("NUM", "");
Toast.makeText(this, m, Toast.LENGTH_SHORT).show();
Dodaj kilka checkings na dobrym poziomie.
Dziękuję
A następnie za to, co chcesz wysłać dane? nie ma dla mnie sensu. – Sajmon
@sajmon Wysyłam te dane, aby pokazać je w innym działaniu, ale nie chcę tego otwierać przez to działanie, teraz czy ma to sens dla Ciebie? – scripter
Teraz tak przepraszam> :) Teraz możesz zapisywać wartości w SharedPreferences, a następnie pobierać je kiedy tylko chcesz. – Sajmon