嗨,谢谢你的帮助。
我想为我的互动小说(选择你自己的冒险风格)小说创建一个“简历游戏”按钮。基本上,每个页面都是一个活动,“恢复游戏”按钮将用户从MainActivity带到他们所在的最近活动(即他们阅读的书籍的最新页面)。
我在SharedPreferences中保存了一个名为“page”的字符串,我知道我这样做了。
如何从SharedPreferences中检索字符串并在启动活动意图中使用它?
首先是我的SharedPreferences字符串代码:
SharedPreferences sharedPref = getSharedPreferences("PrefFile",
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("page", "Page4.class");
editor.apply();
这是按钮的代码;怎么能更换????字符串保存在键“页面”下? (目前,您可以看到该页面= Page4.class)。
public Button butcontinue;
public void init2() {
butcontinue = (Button) findViewById(R.id.butcontinue);
butcontinue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent gotopage = new Intent(MainActivity.this, ??????);
startActivity(gotopage);
}
});
答案 0 :(得分:1)
将页码保存在SharedPreferences中(如果没有.class值)。
SharedPreferences sharedPref = getSharedPreferences("PrefFile", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("page", "com.example.savegamepractice.Page4");
editor.apply();
然后使用SharedPreferences.getString()方法检索值。此外,您必须使用java.lang.Class.forName(String className)
方法,该方法返回与具有给定字符串名称的类或接口关联的Class对象。
public Button butcontinue;
public void init2() {
butcontinue = (Button) findViewById(R.id.butcontinue);
butcontinue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences sharedPref = getSharedPreferences("PrefFile", Context.MODE_PRIVATE);
String page = sharedPref.getString("page", "Page1"); // Page1.class is the default string to return if key does not exist
Intent gotopage = new Intent(MainActivity.this, Class.forName(page));
startActivity(gotopage);
}
});
}
答案 1 :(得分:0)
SharedPreferences sharedPref = getSharedPreferences("PrefFile",
Context.MODE_PRIVATE);
sharedPref.getString("page", "some default value")
如果"页面"值不存在,默认值将是返回的值。
答案 2 :(得分:0)
而不是:
Intent gotopage = new Intent(MainActivity.this, Class.forName(page));
这样做:
Intent gotopage = new Intent();
intent.setClassName(packageName, page);
其中packageName
是清单中的package
条目,page
应包含完全限定的类名,例如" com.example.savegame.Page4"或者你的完全合格的班级名称。