我传递并显示到另一个活动从一个活动值,并利用这些字符串这样使得文件名:空指针SharedPreferences
AU_20140312_160107_65.jpg
AU - 简单的前缀
20140312_160107 - yyyyMMdd_HHmmss
- event_id(从LoginActivity.java获取)
- operative_id(从LoginActivity.java获得)
见下面我的代码:
LoginActivity.java:
static SharedPreferences sharedprefs;
static String event_id, operative_id ;
sharedprefs = getApplicationContext().getSharedPreferences(
"com.example.app", Context.MODE_PRIVATE);
Intent intent = getIntent();
event_id = intent.getStringExtra("event_id");
sharedprefs.edit().putString("EVENT_ID", event_id).commit();
operative_id = intent.getStringExtra("operative_id");
sharedprefs.edit().putString("OPERATIVE_ID", operative_id).commit();
CameraLauncherActivity.java:
static File getOutputMediaFile() {
String event_ID = LoginActivity.sharedprefs.getString("EVENT_ID", null);
Log.d("shared >>> eventID : ", event_ID);
String operative_ID = LoginActivity.sharedprefs.getString("OPERATIVE_ID", null);
Log.d("shared >>> operativeID : ", operative_ID);
timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
.format(new Date());
// file name
mediaFile = new File(LoginActivity.mediaStorageDir.getPath() + File.separator
+ "AU_" + timeStamp + "_" + event_ID + operative_ID + ".jpg");
return mediaFile;
}
当发动第一次,日志说:
shared >>> eventID :(29917): 12
shared >>> operativeID :(29917): 4
就像你可以在上面看到,一切正常,并获得EVENTID和使用记录以及
,但一旦我operativeID将关闭后再次启动我的应用程序,并caputre图像,然后得到NPE和日志:
FATAL EXCEPTION: main
java.lang.NullPointerException: println needs a message
at android.util.Log.println_native(Native Method)
at android.util.Log.d(Log.java:155)
app.mac.Camera.CameraLauncherActivity.getOutputMediaFile(CameraLauncherActivity.java:386)
at app.mac.Camera.CameraLauncherActivity$2.onPictureTaken(CameraLauncherActivity.java:362)
at android.hardware.Camera$EventHandler.handleMessage(Camera.java:789)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4921)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1036)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:803)
at dalvik.system.NativeStart.main(Native Method)
你需要保存值onPause()并加载旧值在onResume() –