在我的应用程序中,我有两个activities
都有静态方法。我从一个单独的活动中调用这些方法。问题是在我的静态方法中,我无法访问getSupportFragmentManager();
生成的错误是:
"无法解析方法getSupportFragmentManager()"
那我该如何解决这个问题?
答案 0 :(得分:0)
您可以尝试此代码。我认为这对您有用。
FragmentManager ft = ((FragmentActivity)activity).getSupportFragmentManager();
DialogFragment newFragment = MyNotification.newInstance();
newFragment.setCancelable(false);
newFragment.show(ft, "mydialog");
答案 1 :(得分:0)
在我的应用程序中,我有两个活动都具有静态方法。一世 从单独的活动中调用这些方法。问题是在我 我无法访问的静态方法 getSupportFragmentManager();
在Activity中使用静态方法来访问它的活动部分通常是一种不好的做法。这是因为您不能确保处于非活动状态时所有活动部分仍然完好无损。但是您可以使用静态方法在活动中创建意图,例如:
public static Intent createIntent(Activity activity, int value) {
Intent intent = new Intent(activity, YourActivityClass.class);
intent.put("EXTRA_VALUE", value);
return intent;
}
,当您尝试创建启动活动的意图时,它将隐藏所有额外的键。您可以通过以下方式调用它:
Intent intent = YourActivityClass.createIntent(this, 10);
startActivity(intent);
正在产生的错误是“无法解决的方法 getSupportFragmentManager()”。那么如何解决此问题?
您需要修改静态方法以直接需要FragmentActivity作为其参数。这是因为getSupportFragmentManager()是FragmentActivity的一部分。像这样:
public static void doSomething(FragmentActivity activity) {
SupportFragmentManager manager = activity.getSupportFragmentManager();
...
}
但是使用上面的代码,您无法从静态方法的活动中访问SupportFragmentManager。所以,这有点用。
或者您可以尝试:
public static SupportFragmentManager doSomething() {
return activity.getSupportFragmentManager();
}
但是当活动被破坏或不活动时(并非总是如此),它将提供NullPointerException。