[英]How to get SharedPreference from non activity class for non activity
[英]How to get String in a non activity class?
我是 android 应用程序开发的新手。我确实发现了与我的问题相关的问题,但没有提供正确的解决方案。 这是我尝试获取字符串的代码。 我收到这样的错误
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String android.content.Context.getString(int)”
public class CommonUtils {
private static Context _context;
public CommonUtils(Context context) {
this._context = context;
}
public static String convertTimeToHoursMinutesString(long lTimeinMillis){
// Calculate hours first.
long hours = TimeUnit.MILLISECONDS.toHours(lTimeinMillis);
lTimeinMillis -= TimeUnit.HOURS.toMillis(hours);
// Calculate minutes then.
long minutes = TimeUnit.MILLISECONDS.toMinutes(lTimeinMillis);
lTimeinMillis -= TimeUnit.MINUTES.toMillis(minutes);
// Calculate seconds last.
//long seconds = TimeUnit.MILLISECONDS.toSeconds(lTimeinMillis);
StringBuilder str = new StringBuilder(64);
str.append(hours);
str.append(_context.getString(R.string.Hour));
str.append(minutes);
str.append(_context.getString(R.string.Min));
//str.append(seconds);
//str.append(" Seconds");
return(str.toString());
}
}
您遇到的问题是_context
上的NullPointerException
。
我认为这是因为您已将_context
声明为static
变量并将convertTimeToHoursMinutesString
为static
方法。
但是您正在构造函数中初始化_context
。
public CommonUtils(Context context) {
this._context = context;
}
但是由于该方法是静态的,因此您不会创建一个对象来调用它。 相反,您将直接通过类名调用它,例如CommonUtils.convertTimeToHoursMinutesString
。 所以构造函数永远不会被调用,因此_context
为空。
如果你想保持静态,那么你可以这样做,
public static String convertTimeToHoursMinutesString(Context _context, long lTimeinMillis){
// Calculate hours first.
long hours = TimeUnit.MILLISECONDS.toHours(lTimeinMillis);
lTimeinMillis -= TimeUnit.HOURS.toMillis(hours);
// Calculate minutes then.
long minutes = TimeUnit.MILLISECONDS.toMinutes(lTimeinMillis);
lTimeinMillis -= TimeUnit.MINUTES.toMillis(minutes);
// Calculate seconds last.
//long seconds = TimeUnit.MILLISECONDS.toSeconds(lTimeinMillis);
StringBuilder str = new StringBuilder(64);
str.append(hours);
str.append(_context.getString(R.string.Hour));
str.append(minutes);
str.append(_context.getString(R.string.Min));
//str.append(seconds);
//str.append(" Seconds");
return(str.toString());
}
你也可以像context.getResources().getString(R.string.YOUR_STRING);
一样访问getString()
context.getResources().getString(R.string.YOUR_STRING);
在你的代码中
str.append(_context.getString(R.string.Min));
请用
str.append(_context.getResources().getString(R.string.Min));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.