Fragment fragmentA = new FragmentA();
getFragmentManager().beginTransaction()
.replace(R.id.MainFrameLayout,fragmentA,"YOUR_TARGET_FRAGMENT_TAG")
.addToBackStack("YOUR_SOURCE_FRAGMENT_TAG").commit();
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");
}
}
}
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);
8条答案
按热度按时间tyky79it1#
是的。所以唯一的方法是在交易时,例如。使用
add
、replace
或作为布局的一部分。我通过检查兼容性来源来确定这一点,因为我在过去的某个时候简要地寻找过类似的来源。
z3yyvxxp2#
你可以通过这种方式将tag设置为fragment:
yquaqz183#
您可以在活动布局xml文件中提供一个标记。
为
android:tag attribute
提供唯一的字符串。就像在布局xml中分配id一样。
链接到开发人员指南
fykwrbwg4#
你也可以像这样得到所有的片段:
对于v4碎片
对于app.fragment
byqmnocz5#
这是我找到的最好的方法:
btxsgosb6#
现在有一种更简单的方法来实现这一点,如果你使用的是
DialogFragment
(而不是Fragment
):在后台,
show()
方法确实创建了一个FragmentTransaction
,并使用add()
方法添加了标记。但在我看来,使用show()
方法要方便得多。你也可以把它缩短为
Fragment
,使用Kotlin Extension:)mf98qq947#
我知道这是6年前的事了,但如果有人面临同样的问题,就像我做的那样:
创建一个自定义的
Fragment
类,带有一个标记字段:在将片段添加到
sectionPagerAdapter
之前,像这样设置标记:tnkciper8#
您可以将标记作为
Fragment
参数的属性添加。如果碎片被销毁,然后由OS重新创建,将自动恢复。