目标:使用片段参数将字符串值从 aTextView
传递到新片段TextView
,但是在使用 a时ViewPager
与.layouts/fragments
FragmentPagerAdapter
问题:新片段从不接收来自前一个片段的片段参数。
我的设置:我有我的Activity
主机ViewPager
和FragmentPagerAdapter
。我已经重写FragmentPagerAdapters
getItem(int position)
了方法来创建一个新fragment
实例,具体取决于ViewPager
. 现在我Fragments
的适配器中只有两个,但在克服这个障碍后会添加更多。我正在使用该newInstance()
技术传递Fragment
的参数,但没有传递任何内容。
相关代码:
我的 FragmentPagerAdapter 代码:
//this is a variable that I pass in as the newInstanct() methods parameter,
// I update this variable from my fragments constantly
public static String fragmentArgumentsValue = "";
mViewPager.setAdapter(new FragmentPagerAdapter(fm) {
@Override
public int getCount() {
return NUMBER_OF_VIEWS;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
Log.d(TAG, "---In getPosition(), position 0---");
return Frag1
.newInstance(fragmentArgumentsValue);
case 1:
Log.d(TAG, "---In getPosition(), position 1---");
return frag2
.newInstance(fragmentArgumentsValue);
default:
Log.d(TAG, "---In getPosition(), DEFAULT---");
return frag1
.newInstance(fragmentArgumentsValue);
}
}
});
片段 newInstance() 方法之一:
public static Fragment newInstance(String fragmentArgumentsValue) {
Frag1 f = new Frag1();
Bundle bun = new Bundle();
bun.putString(KEY_FRAGMENT_ARGUMENTS_STRING, fragmentArgumentsValue);
f.setArguments(bun);
return f;
}
获取片段参数:
String argString = getArguments().getString(
KEY_FRAGMENT_ARGUMENTS_STRING);
if (argString.length() != 0) {
Log.d(TAG, "Trying to set the frag args to:" + argString);
mWorkingTextView.setText("" + argString);
} else {
Log.d(TAG, "Couldn't set frag args to: " + argString);
}
我试过的:我试过给Activity
那个宿主ViewPager
和FragmentPagerAdapter
一个static
我不断更新的变量,我在方法中fragments
包含了static
变量fragment.newInstance(staticVariableInActivity)
,但这似乎不起作用。我也尝试过使用我已经覆盖的ViewPager
回调并尝试在那里传递片段参数,但是它没有工作......所以请帮助我!viewPager.setOnPageChangeListener()
onPageSelected(int pos)
我的想法:我没有不同的fragments
和layouts
在一个ArrayList
或任何列表中,我只是根据 的位置实例化方法Fragments
,这可能是一个问题吗?我应该创建一个列表吗?所以我可以通过列表更改值吗?(如果那是愚蠢的或不可能的事情,请原谅我)。newInstance()
FragementPagerAdapter
singleton
layouts/fragments
Fragments
TextViews
singleton
注意:我正在通过public void onSaveInstanceState(Bundle outState)
处理屏幕旋转来保存 TextViews 值。这会是个问题吗?