如何使用共享首选项和切换方法进行自动保存?

时间:2017-10-04 11:20:01

标签: java android android-intent android-activity switch-statement

让我们说,我们有变量var,它存储信息abaut名称的活动。它从共享偏好中获取。我想做一些自动保存。已启动的上一个活动将其名称发送为共享首选项。我现在不知道的是,如何在buttonlastactivity中将变量var中的活动名称放入switch方法中。第一个buttonnew转到第一个actbegin活动。

示例:

public void onClick(View view) {
Intent intent;

switch (view.getId()) {
case R.id.buttonnew:
intent = new Intent(actmenu.this, actbegin.class);
startActivity(intent);
break;
case R.id.buttonlastactivity:
intent = new Intent(actmenu.this, ??????.class);
startActivity(intent);
break;

问题是,用什么来代替问号来取名存储在变量var中的活动。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您可以将完全限定的类名保存在共享首选项中并使用它 例如。 :如果在SharedPreferences中保存“com.test.MyLastActivity”, 然后你可以这样做:

try {
        Class<?> lastActivity = Class.forName("com.test.MyLastActivity");
        Intent intent = new Intent(this, lastActivity);
        startActivity(intent);
    } catch (ClassNotFoundException e) {
        Log.e("TAG", "Couldn't find class", e);
    }

答案 1 :(得分:0)

我是这样做的:

public void onClick(View view) {
      Intent intent;
      switch (view.getId()) {
 case R.id.buttonnew:
      intent = new Intent(actmenu.this,actbegin.class);
      startActivity(intent);
      break;
case R.id.buttonlastactivity:
       try
       {
       Class<?> lastActivity = Class.forName(var);
       intent = new Intent(actmenu.this, lastActivity);
       startActivity(intent);
       break;
       }
       catch (ClassNotFoundException e)
       {
       Log.e("TAG", "Couldn't find class", e);
}

}
}

并且它不会出错,但是在应用程序启动后和按下buttonlastactivity后(当变量var具有上一个活动的全名时),应用程序将返回到启动应用程序的活动,而不是返回名称写入变量的活动变种。我想使用vvariable,因为在退出应用程序之前,它会根据用户的活动而发生变化。变量从共享首选项中获取。共享首选项在活动开始时获取活动的名称。或者是否有其他方法可以进行某种自动保存,这将允许用户转到上次访问过的活动。