gpt4 book ai didi

android - 将 fragment 发送到 Activity

转载 作者:行者123 更新时间:2023-11-30 02:17:54 25 4
gpt4 key购买 nike

有没有办法将 fragment 发送到 Activity ?或者有没有更好的实现方法适合我的使用?

我有一个 gameOneFrag 和 gameTwoFrag。

例如:从一个 fragment 我想在一个 Activity 中打开其中一个(取决于在 fragment 内按下了哪个按钮)。我可以执行 FragmentTransaction 并将当前 fragment 替换为任何游戏 fragment 。但我宁愿打开一个新的 Activity “GameActivity”,并发送一个 gameFragments 作为额外的东西。

我在想这样的事情:

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//listView.getItemAtPosition(position).getFrag() instead of ;
Intent intent = new Intent(getActivity(), GameActivity.class);
intent.putExtra("GAME_TYPE", gameOneFrag );
startActivity(intent);
}

比在 GameActivityFragment 中

    Fragment frag = getIntent().getExtras().getFragment("GAME_TYPE");
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(ff.getId(), frag)
.commit();
}

或者我真的必须让每个游戏都成为一个 Activity 并完全跳过 GameActivity“容器”吗?

值得一提的是,我有一个 Game 类,我打算在其中存储 fragment 。例如

Game one = new Game(new GameOneFragment());

我以后可以调用 one.getFragment();

最佳答案

您不能将 Fragment 作为 Intent 额外传递。相反,您可以传递一个标志。在您的第一个 Activity 中,定义一些常量。

public static final int FRAG_ONE = 0;
public static final int FRAG_TWO = 1;

当您确定要打开第二个ActivityFragment 后,通过Intent 发送常量。

intent.putExtra("GAME_TYPE", FRAG_ONE);

在您的第二个 Activity 中,您可以检索 Intent extras。

int flag = getIntent().getIntExtra("GAME_TYPE", 0);

现在您知道要加载哪个 Fragment 了。 switch 语句非常适合这个。

switch (flag) {

case ActivityOne.FRAG_ONE:

loadFragmentOne();

break;

case ActivityOne.FRAG_TWO:

loadFragmentTwo();

break;

default:

Log.e(getClass().getName(), "Could not load Fragment");


}

在我看来,我建议只用游戏 Fragment 替换容器,而不是开始一个新的 Activity,尽管你说你不想这样做。

祝你好运,编码愉快!

关于android - 将 fragment 发送到 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28997993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com