gpt4 book ai didi

Android fragment 过渡

转载 作者:行者123 更新时间:2023-11-29 17:21:36 26 4
gpt4 key购买 nike

我有三个 fragment ,F1、F2 和 F3。

在 F1 到 F2 转换并返回到 F1 的情况下,不会调用 F1 的 onCreateView()。

但在 F1 到 F3 转换并返回到 F1 的情况下,会调用 F1 的 onCreateView()。这意味着 F1 的布局 inflater 会膨胀一个新的布局。

F1 到 F2 转换和 F1 到 F3 转换之间存在差异的原因是什么?

我的主要 Activity 如下所示。

public class MainActivity extends AppCompatActivity {

private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);

tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);

}

private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new F1(), "Raw Data");
adapter.addFragment(new F2(), "Grip");
adapter.addFragment(new F3(), "Press");
viewPager.setAdapter(adapter);
}

class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();

public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}

@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}

@Override
public int getCount() {
return mFragmentList.size();
}

public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}

@Override
public CharSequence getPageTitle(int position) {

return mFragmentTitleList.get(position);
}
}

@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_main, 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);
}
}

谢谢

最佳答案

进入 Viewpager 上一个和下一个永不销毁的 fragment 。

如果您是当前 fragment f2,则无法调用 f1 和 f3 的 onCreateView() 方法。

如果您转到 f3 fragment 而不是 f1 id 销毁但不销毁 f2 fragment ,这就是调用 f1 的 onCreateView() 方法的原因。

如果您设置viewPager.setOffscreenPageLimit(4);,它只会创建一次。

对不起,我的英语很差。

关于Android fragment 过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36349871/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com