【问题标题】:How to make autosave using shared preferences and switch method?如何使用共享首选项和切换方法进行自动保存?
【发布时间】:2017-10-04 11:20:00
【问题描述】:

比方说,我们有变量 var,它存储关于活动名称的信息。它从共享偏好中获取。我想做一些自动保存。发起的最后一个活动发送它的名字做共享偏好。我现在不知道的是如何将活动名称从变量 var 放入 buttonlastactivity 的 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 中的活动名称。

有什么建议吗?

【问题讨论】:

  • 如果您打算在后按或其他情况下将用户发送到特定页面/活动,那么这不是一个好习惯,因为它会破坏整个应用程序流程。

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


【解决方案1】:

您可以将完全限定的类名保存在共享首选项中并使用它。
例如。 :如果您在 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);
    }

【讨论】:

  • 我已经把 try/catch 放到 case R.id.buttonlastactivity:
  • 我已将 try/catch 置于:case R.id.buttonlastactivity: - 它在应用程序启动后不起作用,按下按钮没有任何作用(没有错误)。我放了一个名称 o 变量而不是活动名称: Class.forName(var); - 它在应用程序中没有任何作用(没有错误)。此外 - 变量 var 会根据用户上次退出后的女巫活动而变化。
  • 好的。我的错;没有开始活动 - startActivity(intent); 。修改了答案。
【解决方案2】:

我是这样做的:

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);
}

}
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 2023-04-08
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    相关资源
    最近更新 更多