Android 应用程序启动时是否不显示Meesage?

Android 应用程序启动时是否不显示Meesage?,android,message,startup,Android,Message,Startup,我需要在应用程序启动时设置从数据库获取的消息。我从数据库中获取数据,需要在应用程序启动时显示数据,但它只显示msg0。 我不明白代码中的问题在哪里。请给我一些提示和参考。 这是我的代码供参考 Random r = new Random(); SharedPreferences pref = getPreferences(Context.MODE_PRIVATE); Editor ed =pref.edit(); final List<ObjectiveWiseQuesti

我需要在应用程序启动时设置从数据库获取的消息。我从数据库中获取数据,需要在应用程序启动时显示数据,但它只显示msg0。 我不明白代码中的问题在哪里。请给我一些提示和参考。 这是我的代码供参考

Random r = new Random();
  SharedPreferences pref =    getPreferences(Context.MODE_PRIVATE);
  Editor ed =pref.edit();
  final List<ObjectiveWiseQuestion> LocWiseProfile= db.getAllTipsNTricks();

  for (final ObjectiveWiseQuestion cn : LocWiseProfile)
  {
     for( i=0;i<=counter;i++)
     {
         ed.putString("i",cn.getTips());
         // ed.putString("0",cn.getTips());
     } 

      ed.commit();
  }
  String msg = pref.getString(r.nextInt(i)+"", "none");
  Toast.makeText(this, msg, Toast.LENGTH_LONG ).show();
}
catch(Exception e)
{
  e.printStackTrace();
}

提前感谢……

如果我没有错,那么您在共享首选项编辑器中写的值太多了

应该是,

for( i=0;i<=counter;i++)
     {
         ed.putString(""+i,cn.getTips());
         // ed.putString("0",cn.getTips());
     } 

值正在被覆盖,所以请遵循user370305的方式,但仍存在一些问题,问题是由于您正在获取首选项的值,如字符串msg=pref.getStringr.nextInti+,无;在内部for循环之外,所以我假设我也被声明在for循环之外,这在任何地方都不会被更改,所以外部循环将只显示I值,它被声明在您提供的块之外,我认为是类的字段

ed.putStringi,cn.getTips;这里i是key,cn.getTips是for循环中每次相同key i的值。