クラスにsetTag(String tagName)
メソッドのようなものが見つかりませんでしたFragment
。Fragment
私が見つけたタグを設定する唯一の方法はFragmentTransaction
、タグ名をパラメータとして渡すことです。
これはFragment
コードでタグを明示的に設定する唯一の方法ですか?
クラスにsetTag(String tagName)
メソッドのようなものが見つかりませんでしたFragment
。Fragment
私が見つけたタグを設定する唯一の方法はFragmentTransaction
、タグ名をパラメータとして渡すことです。
これはFragment
コードでタグを明示的に設定する唯一の方法ですか?
回答:
はい。唯一の方法は、取引時点であるので、例えば使用してadd
、replace
またはレイアウトの一部として。
過去のある時点で簡単に同様のものを探したので、互換性ソースを調べてこれを決定しました。
次のようにして、タグをフラグメントに設定できます。
Fragment fragmentA = new FragmentA();
getFragmentManager().beginTransaction()
.replace(R.id.MainFrameLayout,fragmentA,"YOUR_TARGET_FRAGMENT_TAG")
.addToBackStack("YOUR_SOURCE_FRAGMENT_TAG").commit();
アクティビティレイアウトxmlファイル内にタグを提供できます。
にandroid:tag attribute
一意の文字列を指定します。
レイアウトxmlでIDを割り当てるのと同じです。
android:tag="unique_tag"
これは私が見つけた最良の方法です:
public class MainActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
// Let's first dynamically add a fragment into a frame container
getSupportFragmentManager().beginTransaction().
replace(R.id.flContainer, new DemoFragment(), "SOMETAG").
commit();
// Now later we can lookup the fragment by tag
DemoFragment fragmentDemo = (DemoFragment)
getSupportFragmentManager().findFragmentByTag("SOMETAG");
}
}
}
私はそれが6年前であることを知っていますが、誰かが同じ問題に直面しているなら、私がしたようにしてください:
Fragment
タグフィールドを持つカスタムクラスを作成します。
public class MyFragment extends Fragment {
private String _myTag;
public void setMyTag(String value)
{
if("".equals(value))
return;
_myTag = value;
}
//other code goes here
}
フラグメントをsectionPagerAdapter
セットに追加する前に、次のようにタグを設定します。
MyFragment mfrag= new MyFragment();
mfrag.setMyTag("TAG_GOES_HERE");
sectionPagerAdapter.AddFragment(mfrag);
Fragment
引数のプロパティとしてタグを追加できます。フラグメントが破棄され、OSによって再作成されると、自動的に復元されます。
例:-
final Bundle args = new Bundle();
args.putString("TAG", "my tag");
fragment.setArguments(args);