myu*_*ban 2 java android android-fragments
如何从活动中调用片段中的方法?我搜索了一些代码,但大多数人说这样使用,
ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);
fragment.specific_function_name();
Run Code Online (Sandbox Code Playgroud)
但我的 xml 中没有片段
我需要另一种方法来调用片段方法。
这是片段中的方法
public void video()
{
new getVideo().execute();
}
Run Code Online (Sandbox Code Playgroud)
这是我的活动
public class ActivityTwitch extends AppCompatActivity
{
Toolbar toolbar;
TabLayout tabLayout;
ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_twitch);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("???");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
toolbar.setNavigationOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
finish();
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
}
});
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Adapter adapter = new Adapter(getSupportFragmentManager());
adapter.addFragment(new TwitchChannel(), "??");
adapter.addFragment(new TwitchStream(), "????");
adapter.addFragment(new TwitchFeed(), "???");
adapter.addFragment(new TwitchVideo(), "???");
viewPager = (ViewPager) findViewById(R.id.viewPager);
viewPager.setAdapter(adapter);
tabLayout = (TabLayout) findViewById(R.id.tabLayout);
tabLayout.setupWithViewPager(viewPager);
}
public class Adapter extends FragmentPagerAdapter
{
private final List<Fragment> mFragments = new ArrayList<>();
private final List<String> mFragmentTitles = new ArrayList<>();
public Adapter(FragmentManager fm)
{
super(fm);
}
public void addFragment(Fragment fragment, String title)
{
mFragments.add(fragment);
mFragmentTitles.add(title);
}
@Override
public Fragment getItem(int position)
{
return mFragments.get(position);
}
@Override
public int getCount()
{
return mFragments.size();
}
@Override
public CharSequence getPageTitle(int position)
{
return mFragmentTitles.get(position);
}
}
@Override
public void onBackPressed()
{
super.onBackPressed();
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您通过代码添加了片段并在添加片段时使用了标签字符串,请改用findFragmentByTag():
YourFragmentClass fragment = (YourFragmentClass)fm.findFragmentByTag("yourTag");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1313 次 |
| 最近记录: |