-1

I am passing and showing values from one activity to another activity, and making file name using those string like this:

 AU_20140312_160107_65.jpg

AU - simple prefix

20140312_160107 - yyyyMMdd_HHmmss

6 - event_id (getting from LoginActivity.java)

5 - operative_id (getting from LoginActivity.java)

see my code below:

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

when launching first time, Log says:

shared >>> eventID :(29917): 12
shared >>> operativeID :(29917): 4

like you can see above, everything works fine, and getting eventID and operativeID using log as well

but once i will launch my app again, after closing it, and caputre image, then getting NPE and Log :

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)
Sun
  • 6,768
  • 25
  • 76
  • 131

2 Answers2

1

Instead of assigning the values directly to the variables event_id and operative_id store them in the db or preferences.

Instead of directly assigning like this this : event_id = intent.getStringExtra("event_id"); operative_id = intent.getStringExtra("operative_id");

check the intent.getStringExtra("event_id") and intent.getStringExtra("operative_id") for null.

If null fetch from stored values. If not null assign to variables and overwrite stored values with the new one for next time.

Viral Patel
  • 32,418
  • 18
  • 82
  • 110
  • I meant SharedPreferences. Refer this question to know how to do it. http://stackoverflow.com/questions/3624280/how-to-use-sharedpreferences-in-android-to-store-fetch-and-edit-values – Viral Patel Mar 13 '14 at 07:11
  • more on the class - [SharedPreferences](http://developer.android.com/reference/android/content/SharedPreferences.html) – Viral Patel Mar 13 '14 at 07:13
0
//Initialization 
SharedPreferences _mypref = getApplicationContext().getSharedPreferences("mypref", 0);

//store data in shared preferences
Editor editor = _mypref.edit();

//Storing boolean - true/false;     
editor.putBoolean("key_name", true);  

//Storing string
editor.putString("key_name", "string value");

//Storing integer
editor.putInt("key_name", "int value");    

//Storing float
editor.putFloat("key_name", "float value");       

//Storing long 
editor.putLong("key_name", "long value"); 

//commit changes
editor.commit();       

// retrive data

//getting String
_mypref .getString("key_name", null); 

//getting Integer
_mypref .getInt("key_name", null);         

//getting Float
_mypref .getFloat("key_name", null);   

//getting Long
_mypref .getLong("key_name", null);    


//getting boolean
_mypref.getBoolean("key_name", null);     


//remove Data
editor.remove("name");
editor.commit();


//Clear all Data 
editor.clear();
editor.commit();
kevz
  • 2,727
  • 14
  • 39
Pankaj Arora
  • 10,224
  • 2
  • 37
  • 59
  • 2
    @Moon For More You can refer this : http://androiddevelopmentworld.blogspot.in/2013/04/shared-preferences-in-android.html :) – Hardik Joshi Mar 13 '14 at 07:23