1

を使用して2つのタブを作成しFragmentました。最初のタブにはEditTextと がありbuttonます。ユーザーが に何かを入力してEditTextクリックすると、button2 番目のタブに移動します。onButtonClick2 番目のタブを表示するように設定しましたが、値が更新されません。に 1 つ目のタブの値を正常に書き込めましたがsession。しかし、2 番目のタブを更新する方法がわかりませんか? 2番目のタブを再構築する方法は?

ここに私のコードを追加しました:

FragmentA I 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

編集:

インテントが初めて呼び出されるため、タブは更新されません。タブを追加するときに、インテントを設定し、そこにこのフラグを追加します。addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

例 :

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

共有設定を使用して、入力値を保存された設定に保存し、2番目のタブに移動できます

于 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 に答える