Έχω δύο τάξεις. Η πρώτη είναι η δραστηριότητα, η δεύτερη είναι ένα κομμάτι όπου έχω κάποιο EditText
. Στο activity έχω μια υποκλάση με async-task και στη μέθοδο doInBackground
παίρνω κάποιο αποτέλεσμα, το οποίο αποθηκεύω σε μεταβλητή. Πώς μπορώ να στείλω αυτή τη μεταβλητή από την υποκλάση "my activity" σε αυτό το fragment;
Από τη Δραστηριότητα στέλνετε δεδομένα με πρόθεση όπως:
Bundle bundle = new Bundle();
bundle.putString("edttext", "From Activity");
// set Fragmentclass Arguments
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);
και στη μέθοδο Fragment onCreateView:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String strtext = getArguments().getString("edttext");
return inflater.inflate(R.layout.fragment, container, false);
}
Έχω βρει πολλές απαντήσεις εδώ @ stackoverflow.com αλλά σίγουρα αυτή είναι η σωστή απάντηση του:
Δραστηριότητα:
Bundle bundle = new Bundle();
String myMessage = "Stackoverflow is cool!";
bundle.putString("message", myMessage );
FragmentClass fragInfo = new FragmentClass();
fragInfo.setArguments(bundle);
transaction.replace(R.id.fragment_single, fragInfo);
transaction.commit();
Fragment:
Ανάγνωση της τιμής στο θραύσμα
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Bundle bundle = this.getArguments();
String myValue = bundle.getString("message");
...
...
...
}
ή απλά
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
String myValue = this.getArguments().getString("message");
...
...
...
}
Αν περάσετε μια αναφορά στο θραύσμα (συγκεκριμένη υποκλάση του) στην ασύγχρονη εργασία, μπορείτε στη συνέχεια να αποκτήσετε άμεση πρόσβαση στο θραύσμα.
Ορισμένοι τρόποι για να περάσετε την αναφορά του θραύσματος στην ασύγχρονη εργασία:
class FooTask extends AsyncTask
), τότε περάστε το θραύσμα σας στον κατασκευαστή.