使用按钮中的SharedPreferences字符串开始新活动

时间:2017-07-12 23:26:38

标签: android android-intent sharedpreferences

嗨,谢谢你的帮助。

我想为我的互动小说(选择你自己的冒险风格)小说创建一个“简历游戏”按钮。基本上,每个页面都是一个活动,“恢复游戏”按钮将用户从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);


        }


    });

3 个答案:

答案 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"或者你的完全合格的班级名称。