不能将Class.forName()与v4.app.Fragment一起使用

时间:2019-05-08 07:27:31

标签: android

我正在尝试在onResume()中运行以下代码。

SharedPreferences sharedPreferences = this.getSharedPreferences("com.example.appname.MainActivity", Context.MODE_PRIVATE);
String foregroundFragment = sharedPreferences.getString("foreground_fragment", "");
try {
    Fragment fragment = (Fragment) Class.forName(foregroundFragment);
    } catch (ClassNotFoundException e) {
        Log.i("EXCEPTION!", e.toString());
    }

但是, Class.forName()似乎是错误的方法,因为它会给出以下错误消息:

“不可转换的类型;无法将'java.lang.Class>'转换为'android.support.v4.app.Fragment。'

我不知道允许我检索String并将其用于初始化Fragment变量的另一种方法。我已经在网上搜索过,但是除了 Class.forName()之外没有找到其他东西。我通过SharedPreferences检索的字符串确实包含该片段的全名,即。 “ com.example.appname.ForegroundFragment”

我应该使用另一种方法吗?我要把这都弄错了吗?

1 个答案:

答案 0 :(得分:1)

尝试使用 newInstance()

Fragment fragment = (Fragment) Class.forName(foregroundFragment).newInstance();