Sak*_*boy 6 java android android-fragments android-viewpager fragmentpageradapter
目的:为了使用片段参数从一个沿字符串值传递TextView到一个新的片段TextView,但在使用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);
}
}
});
Run Code Online (Sandbox Code Playgroud)
片段 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;
}
Run Code Online (Sandbox Code Playgroud)
获取片段参数:
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);
}
Run Code Online (Sandbox Code Playgroud)
我试过的:我试过给Activity主机ViewPager和FragmentPagerAdapter一个static我不断更新的变量,我在方法中fragments包含static变量fragment.newInstance(staticVariableInActivity),但这似乎不起作用。我也尝试使用我已经覆盖的ViewPager回调并尝试在那里传递片段参数,但是它没有用......所以请帮助我!!!viewPager.setOnPageChangeListener()onPageSelected(int pos)
我的想法:我没有不同的fragments,layouts在一个ArrayList或任何列表中,我只是根据 的位置实例化FragmentsvianewInstance()方法,这FragementPagerAdapter可能是一个问题吗?我应该创建一个singleton列表layouts/fragments吗?所以我可以Fragments TextViews通过singleton列表更改的值?(如果这是愚蠢的或不可能的事情,请原谅我)。
注意:我正在通过public void onSaveInstanceState(Bundle outState)处理屏幕旋转来保存 TextViews 值。这可能是个问题吗?
好吧,所以我这个链接将有助于片段之间的通信:与其他片段的通信。
您需要定义一个 Activity 将实现的接口,并且片段将使用它向 Activity 发送数据,然后 Activity 将通过标记找到片段,执行如下操作:
frag = (Fragment2) getSupportFragmentManager()
.findFragmentByTag(
"android:switcher:" + R.id.viewPager + ":2");
Run Code Online (Sandbox Code Playgroud)
然后通过调用片段内实现的公共方法来更新片段。
提供的链接会有很大帮助,它来自 Android Development 网站。
| 归档时间: |
|
| 查看次数: |
11979 次 |
| 最近记录: |