getChildFragmentManager () nicht aufgelöst werden kann oder verwiesen werden kann
Ich weiß, es gibt viele Beiträge im forum zu diesem Thema bereits, aber keiner löste mein Problem
Mein code sieht wie folgt aus:
private SectionsPagerAdapter myAdapt;
private ViewPager myPager;
....
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_screen);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//Create the adapter that will return a fragment for each of the three
//primary sections of the activity.
if (mSectionsPagerAdapter == null) {
mSectionsPagerAdapter = new SectionsPagerAdapter(getChildFragmentManager());
}
//Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
....
Aber ich bekomme die Cannot resolve method getChildFragmentManager ()
scheint das zu machen viele Probleme.
Ich habe bereits versucht, eine ziemlich ganze Menge Dinge:
- Ich habe in der inbound-support Bibliothek für die richtige version.
- Ich habe versucht, eine Referenz-Methode als
android.support.v7.app.getChildFragmentManager()
die hab mir dieCannot make static reference from non-static context
Fehler. - Ich nach der v4 support library
Das ganze Problem entstand, weil die Fragmente wiederum leer, wenn ich zurück in die Aktivität. Wenn Sie noch eine andere Idee, fühlen Sie sich frei, zu Antworten oder einen Kommentar, dann wird die ganze Frage in Bezug auf die getChildFragmentManager ist ohnehin gelöst
Ich habe keine Ahnung, was zu tun ist...
ps: hier ist die ganze Klasse Umsetzung:
import android.support.v4.app.FragmentManager;
import android.content.Intent;
import android.os.AsyncTask;
import android.support.design.widget.TabLayout;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
public class HomeScreen extends AppCompatActivity {
int index = 0;
int semIndex = 0;
public static final String GROUP_EXTRA = "Group";
public static final String HOME_SCREEN_LOG = "HomeScreen Activity";
/**
* The {@link android.support.v4.view.PagerAdapter} that will provide
* fragments for each of the sections. We use a
* {@link FragmentPagerAdapter} derivative, which will keep every
* loaded fragment in memory. If this becomes too memory intensive, it
* may be best to switch to a
* {@link android.support.v4.app.FragmentStatePagerAdapter}.
*/
private SectionsPagerAdapter mSectionsPagerAdapter;
/**
* The {@link ViewPager} that will host the section contents.
*/
private ViewPager mViewPager;
LayoutInflater inflater;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_screen);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//Create the adapter that will return a fragment for each of the three
//primary sections of the activity.
if (mSectionsPagerAdapter == null) {
mSectionsPagerAdapter = new SectionsPagerAdapter(getChildFragmentManager());
}
//Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
final Bundle b;
if ((b =this.getIntent().getExtras()) != null) {
AsyncTask at = new AsyncTask() {
@Override
protected Object doInBackground(Object[] params) {
String groupName = b.getString(HomeScreen.GROUP_EXTRA),
desc = b.getString(NewEditGroupActivity.DESC_EXTRA),
time = b.getString(NewEditGroupActivity.TIME_EXTRA),
date = b.getString(NewEditGroupActivity.DATE_EXTRA);
int numOfPart = b.getInt(NewEditGroupActivity.NUM_EXTRA);
boolean regular = b.getBoolean(NewEditGroupActivity.IS_NEW);
ExpandListChild elc = new ExpandListChild(desc,String.valueOf(numOfPart),date,time,regular);
ExpandListGroup elg = new ExpandListGroup(groupName);
MyLgFragment lf = (MyLgFragment) mSectionsPagerAdapter.getItem(0);
AllLgFragment af = (AllLgFragment) mSectionsPagerAdapter.getItem(1);
af.add(elc,elg);
lf.add(elc,elg);
return null;
}
};
}
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
inflater = getLayoutInflater();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_home_screen, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//Handle action bar item clicks here. The action bar will
//automatically handle clicks on the Home/Up button, so long
//as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.
getChildFragmentManager
Methode für die Unterbringung und Verwaltung der Fragmente innerhalb des aktuellen Fragments und verwenden getSupportFragmentManager
Methode bei der Platzierung und Verwaltung der Fragmente in der Tätigkeit
InformationsquelleAutor Do Re | 2016-01-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
getChildFragmentManager()
ist eine Methode, eineFragment
. Da Sie UnterklassenAppCompatActivity
Sie können nicht darauf zugreifen. Wenn Sie dieFragment
von der support-Bibliothek, die Sie verwenden könnengetSupportFragmentManager()
Was meinst du emptyness? Könnte Sie buchen den adapter?
Wenn ich zu einem anderen wechseln Aktivität und kommen zurück, alle Einträge wurden in die SectionsPagerAdapter verschwunden sind... Siehe diese google-Suche: google.de/...
Sie alle beschreiben das gleiche Problem, während die Festsetzung es durch das ersetzen
getSupprtFragmentManager
durchgetChildFragmentManager
SectionsPagerAdapter
ist nicht die Klasse derAndroid
. Hast du es denn schreiben ? Vielleicht sehe ich den code? Was sindgetCount
undgetItem
zurück?InformationsquelleAutor Blackbelt
Dies ist wahrscheinlich nicht die eleganteste Lösung, aber in meinem Fall brauchte ich den viewpager zu sein, läuft in seiner eigenen fragment, während mit der Symbolleiste und tablayout befinden sich in der MainAcitivy.
Einziger Nachteil ist, dass Sie zum ausblenden der TabLayout manuell in andere Fragmente, die nicht mit der Tab - /Viewpager.
Aber auf diese Weise können Sie immer noch rufen getChildFragmentManager aus dem Fragment.
InformationsquelleAutor Henk-Martijn
Ich hatte genau das gleiche Problem und ich konnte es beheben, indem Sie einfach:
Als vorgeschlagen wurde in diesem Beitrag.
InformationsquelleAutor mehti
sollten Sie tun wie:
InformationsquelleAutor Pawan Rathi