gpt4 book ai didi

android - 如何在静态方法中访问 getSupportFragmentManager()?

转载 作者:太空宇宙 更新时间:2023-11-03 11:03:42 25 4
gpt4 key购买 nike

在我的应用程序中,我有两个 Activity ,它们都有一个静态方法。我从一个单独的 Activity 中调用这些方法。问题是在我的静态方法中我无法访问 getSupportFragmentManager(); 产生的错误是:

"unable to resolve method getSupportFragmentManager()"

那么我该如何解决这个问题呢?

最佳答案

In my application I have two activities both having a static method. I call these methods from a separate activity. The problem is that in my static methods I am unable to get access to getSupportFragmentManager();

在访问 Activity 部分的 Activity 中使用静态方法通常是一种不好的做法。这是因为你不能确保所有的 Activity 部分在非 Activity 状态下仍然完好无损。但是您可以使用静态方法在 Activity 中创建 Intent ,如下所示:

public static Intent createIntent(Activity activity, int value) {
Intent intent = new Intent(activity, YourActivityClass.class);
intent.put("EXTRA_VALUE", value);
return intent;
}

当您尝试创建启动 Activity 的 Intent 时,它将隐藏所有额外的键。你可以在哪里调用它:

Intent intent = YourActivityClass.createIntent(this, 10);
startActivity(intent);

the error being produced is "unable to resolve method getSupportFragmentManager()". So how do I resolve this problem?

您需要修改静态方法以直接要求 FragmentActivity 作为其参数。是因为getSupportFragmentManager()是 FragmentActivity 的一部分。像这样:

public static void doSomething(FragmentActivity activity) {
SupportFragmentManager manager = activity.getSupportFragmentManager();
...
}

但是使用上面的代码,你不能从静态方法的 Activity 中访问SupportFragmentManager。所以,这有点没用。

或者你可以试试:

public static SupportFragmentManager doSomething() {
return activity.getSupportFragmentManager();
}

但是当 Activity 被销毁或不活动时(并非总是如此),它会给你 NullPointerException。

关于android - 如何在静态方法中访问 getSupportFragmentManager()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36467821/

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