我正在尝试在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” 。
我应该使用另一种方法吗?我要把这都弄错了吗?
答案 0 :(得分:1)
尝试使用 newInstance()
Fragment fragment = (Fragment) Class.forName(foregroundFragment).newInstance();