hinzufügen Ich versuche zu ermöglichen, Fragmente zum Container (FrameLayout) der Aktivität hinzufügen, indem Sie einige Methoden der Aktivität aufrufen.Wie Fragment zu Aktivität aus einer anderen Klasse in Android
So, hier ist eine vereinfachte Version meiner Tätigkeit Klasse:
public class TermsAndConditionsActivity extends AppCompatActivity {
private static TermsAndConditionsActivity instance;
private static boolean loggedIn;
private TermsAndConditionsListener termsAndConditionsListener;
private TermsAndConditionsFragment termsAndConditionsFragment;
private ReadTermsAndConditionsFragment readTermsAndConditionsFragment;
private Terms terms;
private User user;
protected FragmentManager fragmentManager;
public TermsAndConditionsActivity() {}
public static TermsAndConditionsActivity getInstance(Terms terms, User user, boolean loggedIn, TermsAndConditionsListener termsAndConditionsListener) {
if (instance == null) {
instance = new TermsAndConditionsActivity();
instance.terms = terms;
instance.user = user;
instance.loggedIn = loggedIn;
instance.termsAndConditionsListener = termsAndConditionsListener;
}
return instance;
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.activity_main_activity_no_drawer);
fragmentManager = getSupportFragmentManager();
prepareReadTermsAndConditionsFragment();
prepareTermsAndConditionsFragment();
}
private void prepareTermsAndConditionsFragment() {
if (termsAndConditionsFragment == null) {
if (loggedIn) {
termsAndConditionsFragment = TermsAndConditionsOnlineFragment.newInstance(termsAndConditionsListener);
} else {
termsAndConditionsFragment = TermsAndConditionsAnonymousFragment.newInstance(termsAndConditionsListener);
}
}
}
private void prepareReadTermsAndConditionsFragment() {
if (readTermsAndConditionsFragment == null) {
readTermsAndConditionsFragment = ReadTermsAndConditionsFragment.newInstance(terms, user, termsAndConditionsListener);
}
}
public void openTermsAndConditions() {
initFragment(termsAndConditionsFragment);
}
public void openReadTermsAndConditions() {
initFragment(readTermsAndConditionsFragment);
}
private void initFragment(TermsAndConditionsFragment fragment) {
if (fragment != null) {
FragmentTransaction ft = getFragmentTransaction();
ft.add(getContainerId(), fragment, fragment.getTagString()).commit();
}
}
protected FragmentTransaction getFragmentTransaction() {
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.setCustomAnimations(R.anim.fade_in, R.anim.fade_out);
return ft;
}
public static void startActivity(Context context, int flags) {
if (context != null) {
Intent launchIntent = getIntent(context, flags);
context.startActivity(launchIntent);
}
}
public static Intent getIntent(Context context, int flags) {
Intent launchIntent = new Intent(context, TermsAndConditionsActivity.class);
launchIntent.addFlags(flags);
return launchIntent;
}
}
die Aktivität Klasse funktioniert das Layout der Aktivität für die Erstellung, die zur Aufnahme Fragments im Grunde ein Framelayout ist.
Das Problem ist, dass, wenn ich die Methode "openTermsAndConditions()" von außerhalb der Aktivitätsklasse aufrufen, passiert nichts. Aber wenn ich es in der Aktivitätsklasse von onCreate aus anrufe, wird es korrekt hinzugefügt. Ich möchte diese von außerhalb der Aktivitätsklasse hinzufügen können.
Ich hoffe, dass mir jemand hier helfen kann.
Jede Hilfe wird sehr geschätzt.