我正在尝试使用Fragment ViewPager
使用FragmentPagerAdapter
.我想要实现的是将位于第一页上的片段替换为另一片段ViewPager
.
寻呼机由两页组成.第一个是FirstPagerFragment
,第二个是SecondPagerFragment
.单击第一页的按钮.我想FirstPagerFragment
用NextFragment 替换它.
我的代码如下.
public class FragmentPagerActivity extends FragmentActivity {
static final int NUM_ITEMS = 2;
MyAdapter mAdapter;
ViewPager mPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_pager);
mAdapter = new MyAdapter(getSupportFragmentManager());
mPager = (ViewPager) findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
}
/**
* Pager Adapter
*/
public static class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int …
Run Code Online (Sandbox Code Playgroud) 我有一个ViewPager + FragmentPageAdapter的问题.
场景: 我在片段A中有一个活动.片段A有一个带有片段B1和片段B2的ViewPager.B1 e B2是相同的类,但不同的数据作为参数.
问题: 在创建时一切都很好.但是当应用程序进入后台并且进程被android杀死时,尝试恢复最后一个状态,再次启动应用程序,片段B1 e B2在前景中不可见,而片段A是.看起来有点奇怪的是片段B1和B2在片段A的ChildFragmentManager中,并且由于onStart()和onResume()被调用(由Log看到)而被恢复.此外,寻呼机恢复两页,但空或更好,没有任何可见.
如果我很清楚FragmentPagerAdapter是如何工作的,那么它应该负责管理自己的片段以及如何重新创建片段.此外,为了强制执行这一点,如果已经存在具有指定标记的该位置的片段,则FragmentPagerAdapter在从后台返回时不会调用getItem(int position).
...那么为什么我看不到片段B1 e B2,只有传呼机空了?
这是我的示例代码.
FragmentA
@Override
public void onStart() {
super.onStart();
populateViewPager();
}
private void populateViewPager() {
pager.setAdapter(new MyFragmentPageAdapter(getChildFragmentManager()));
indicator.setViewPager(pager);
indicator.notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)
FragmentPagerAdapter
public class MyFragmentPageAdapter extends FragmentPagerAdapter {
public MyFragmentPageAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return FragmentB.newInstance(position);
}
@Override
public int getCount() {
return 2;
}
@Override
public CharSequence getPageTitle(int position) {
String title = "";
if (position == 0)
title …
Run Code Online (Sandbox Code Playgroud) 我在我的Android应用程序中使用Retrofit作为我的网络层,但是我对URL编码有疑问.
我必须像这样调用REST API:
https://my_hostname.com/some_path?q=some_query¶m[0]=value1¶m[1]=value2&other_param=abcd
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,查询字符串由一些不同类型的参数组成,因此我决定@QueryMap
在Retrofit Interface中使用注释,Map<String, String>
其中where
q, param[1], param[0], other_param
是地图的String键
我期待什么?我希望URL中的方括号用%5B
for '['
和%5D
for 编码'['
,但这不会发生.
为什么会这样?方括号应使用百分比编码进行编码.这是一个错误还是我做错了什么?我也尝试了@EncodedQueryMap
没有差异的注释.
我有一个Android项目,它依赖于不同的模块,每个模块依赖于android support-v4库的不同版本
1)我的应用程序还依赖于最新的android support-v4库(修订版21)所以在这个build.gralde中我放了一行:
dependencies {
compile 'com.android.support:support-v4:21.0.0'
}
Run Code Online (Sandbox Code Playgroud)
2)Facebook SDK(v.3.15)模块也依赖于android支持库v4,但是版本13及其build.gradle文件说:
dependencies {
compile 'com.android.support:support-v4:13.0.+'
compile files('../libs/bolts.jar')
}
Run Code Online (Sandbox Code Playgroud)
3)还有一个模块,在这种情况下我们可以调用Module3,也取决于support-v4但是与其他模块的修订版本不同,例如:
dependencies {
compile 'com.android.support:support-v4:19.0.+'
compile files('../libs/bolts.jar')
}
Run Code Online (Sandbox Code Playgroud)
问题:
1)gradle如何处理不同的support-v4库修订版?
2)它究竟做了什么?
3)就apk大小而言,它是什么意思?
android gradle android-support-library android-gradle-plugin
情况
活动A - >活动B - >活动C.
当活动C开始时,我希望C成为根活动,而A和B完成.
我怎样才能做到这一点?
UDPATE
我在10级,所以我不能使用适用于11级和更高级别的CLEAR_TASK标志.强文