У меня есть два фрагмента (Fragment1 и Fragment2), созданные навигация ActionBar с пользовательским классом TabListener. Континент каждой вкладки является одним из моих фрагментов. Но теперь у меня есть проблема - я не могу получить доступ к экземплярам фрагмента.Получить текущий фрагмент из вкладки ActionBar
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getSupportActionBar().setNavigationMode(getSupportActionBar().NAVIGATION_MODE_TABS);
Tab tab = getSupportActionBar().newTab()
.setText(R.string.frag1)
.setTabListener(
new MyTabListener(this,
Fragment1.class.getName()));
getSupportActionBar().addTab(tab);
tab = getSupportActionBar().newTab()
.setText(R.string.frag2)
.setTabListener(
new MyTabListener(this,
Fragment2.class.getName()));
getSupportActionBar().addTab(tab);
Fragment1 f1 = (Fragment1) getSupportFragmentManager().findFragmentByTag("FRAG1");
if(f1 != null) {
Toast.makeText(this, "It's not empty", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Toast.makeText(this, "Photo Intent Goes Here", Toast.LENGTH_SHORT).show();
if(data != null) {
Toast.makeText(this, "It's not empty", Toast.LENGTH_SHORT).show();
if (resultCode == RESULT_OK) {
}
} else {
Toast.makeText(this, "It's empty", Toast.LENGTH_SHORT).show();
}
}
private class MyTabListener implements TabListener
{
private SherlockFragment mFragment;
private final Activity mActivity;
private final String mFragName;
public MyTabListener(Activity activity,
String fragName)
{
mActivity = activity;
mFragName = fragName;
}
@Override
public void onTabSelected(Tab tab,
android.support.v4.app.FragmentTransaction ft) {
mFragment = (SherlockFragment) SherlockFragment.instantiate(mActivity,
mFragName);
if(mFragment instanceof Fragment1) {
Fragment1 f1temp = (Fragment1) mFragment;
//Toast.makeText(mActivity, "Frag1", Toast.LENGTH_SHORT).show();
ft.add(android.R.id.content, mFragment,"FRAG1");
}
else {
ft.add(android.R.id.content, mFragment,"ELSE");
}
//Toast.makeText(mActivity, mFragName, Toast.LENGTH_SHORT).show();
}
@Override
public void onTabUnselected(Tab tab,
android.support.v4.app.FragmentTransaction ft) {
ft.remove(mFragment);
mFragment = null;
}
public SherlockFragment getCurrentFragment() {
return mFragment;
}
@Override
public void onTabReselected(Tab tab,
android.support.v4.app.FragmentTransaction ft) {
// TODO Auto-generated method stub
}
}
я не могу использовать getSupportFragmentManager().findFragmentById(id)
, потому что у меня нет идентификатора и я попытался getSupportFragmentManager().findFragmentByTag(tag)
, но это не сработало, потому что я только называю add()
метод FragmentTransaction
класс не replace()
Является ли это каким-либо образом получить текущий экземпляр фрагмента вкладки, чтобы я мог вызвать методы фрагмента?
Объясните лучше, что вы пытаетесь сделать, у вас есть 2 фрагменты, Так что вы хотите знать, как создать методы для каждого класса фрагмента? – Marckaraujo
Я хочу получить экземпляр фрагмента, который позволил бы мне вызвать методы этого фрагмента, передать некоторые переменные и т. Д. –