1

我已经使用Fragment. 第一个选项卡有 aEditText和 a button。如果用户在 中输入内容EditText并单击button它会转到第二个选项卡。onButtonClick我已设置显示第二个选项卡,但我的值未更新。虽然我已经成功地将第一个选项卡值写入session. 但不知道如何更新第二个标签?如何重建第二个选项卡?

在这里添加了我的代码:

在 FragmentA 我 onButtonClick 我调用了这个函数:

private void goToFragmentB(String 1stTabValue)
{
    ViewPager mViewPager = (ViewPager) getActivity().findViewById(R.id.pager);
       // My 2nd tab has a TextView where I need to set the 1stTabValue. What should be the code
       // to set 1stTabValue in 2nd tab
    mViewPager.setCurrentItem(1);
}
4

3 回答 3

1

编辑:

选项卡不会刷新,因为仅第一次调用 Intent .. 添加选项卡时,您将设置 Intent 并在此处添加此标志addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

例子 :

 Intent i = new Intent().setClass(this, YourClass.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

您可以使用Shared Preferences,将输入值存储在存储的首选项中并进入第二个选项卡

于 2013-03-01T06:38:46.380 回答
0

您可以将值存储在包含片段的活动中。我希望,您的下一个片段将使用相同的活动。但是这种方法不会永久存储您的数据,如果活动关闭,您以前的所有数据都会被清除。

如果您需要持久化数据,则必须使用共享首选项。数据将存储在 shared_pref 文件夹下的应用程序文件夹中。它存储为键值对。

希望这可以帮助。

于 2013-03-01T06:55:14.440 回答
0

添加标签时尝试此操作

  private void addTab(int drawableId,String name, Class<?> c)
{

    TabHost.TabSpec spec = tabHost.newTabSpec(name);

    View tabIndicator = LayoutInflater.from(this).inflate(R.layout.tab_indicator, getTabWidget(), false);

    ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon);
    TextView text = (TextView) tabIndicator.findViewById(R.id.title);
    icon.setImageResource(drawableId);
    text.setText(name);
    tabHost.setTag(name);
    tabHost.addTab(spec
            .setIndicator(tabIndicator)
            .setContent(new Intent(this, c)
                    .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));
}

每次点击标签时,此 Intent.FLAG_ACTIVITY_CLEAR_TOP 都会刷新您的标签

对于存储价值,使用共享偏好或数据库,这完全取决于您的选择

于 2013-03-02T07:28:00.173 回答