Ich mache derzeit auf ein Projekt, das erfordert, dass ich meine Daten zwischen Tabs/Fragmente verschieben. Angenommen, der Benutzer klickt auf das Element ListView, sie werden stattdessen auf eine andere Registerkarte verschoben im selben Tab zu bleiben. Darf ich wissen, wie ich das erreichen kann? Kann mir jemand helfen, meine Anfrage zu lösen? Vielen Dank!Android Studio - Daten verschieben innerhalb Tabs/Fragmente
0
A
Antwort
0
Sie können Daten zwischen den Registern von Satz trasnfer und Argumente erhalten, Hier ist Beispiel
FragmentTwo fragmentTwo = new FragmentTwo();
Bundle bundle = new Bundle();
bundle.putString("key1", "data1");
bundle.putString("key2", "data2");
bundle.putString("key3", "data3");
fragmentTwo.setArguments(bundle);
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_container, fragmentTwo);
fragmentTransaction.commit();
0
Es gibt 3 Möglichkeiten, um diesen
1) Verwenden Schnittstellen -use Schnittstelle zu tun, Daten zu übergeben Objekte. Meshy Lösung
public interface onDataCHange{
public void updateData(String data);
}
2) Verwenden Activity Class - Store-Modell Objekt in Aktivitätsklasse und eingestellt und erhalten Aktivität Instanz verwenden. Quick and Dirty Lösung
//Get
Object dataModel = (ContainerActivity) getActivity()).getData();
//Set
((ContainerActivity) getActivity()).setData(dataModel);
3) Sauber Architektur - Zentrum Repository halten Modellobjekte. Zeigen Sie das Aktualisierungsmodell über das Repository-Objekt Singleton Center an. Einzelkopie des Datenflusses zwischen der App.
@Singleton
public class UserDataRepository implements UserRepository {
private final UserDataStoreFactory userDataStoreFactory;
private final UserEntityDataMapper userEntityDataMapper;
/**
* Constructs a {@link UserRepository}.
*
* @param dataStoreFactory A factory to construct different data source implementations.
* @param userEntityDataMapper {@link UserEntityDataMapper}.
*/
@Inject
UserDataRepository(UserDataStoreFactory dataStoreFactory,
UserEntityDataMapper userEntityDataMapper) {
this.userDataStoreFactory = dataStoreFactory;
this.userEntityDataMapper = userEntityDataMapper;
}
@Override public Observable<List<User>> users() {
//we always get all users from the cloud
final UserDataStore userDataStore = this.userDataStoreFactory.createCloudDataStore();
return userDataStore.userEntityList().map(this.userEntityDataMapper::transform);
}
@Override public Observable<User> user(int userId) {
final UserDataStore userDataStore = this.userDataStoreFactory.create(userId);
return userDataStore.userEntityDetails(userId).map(this.userEntityDataMapper::transform);
}
}