Question

I have a problem with passing a Object from one activity to another. I'm using the Jsch() Class because I want to make an Sftp Connection.

This in my Login Activty:

ServerConnect lLogin = new ServerConnect(lUser,lPass,lIP,lPort);
ASYNCLogin lASYNC = new ASYNCLogin(lLogin,getBaseContext());
lASYNC.execute();   

My ASYNC Task:

    @Override
    protected Integer doInBackground(Void... params)
    {
        if(mServerConnect.connectServer())
            return 1;       
        return 0;       
    }
    @Override
    protected void onPostExecute(Integer result)
    {       
        //Toast.makeText(mContext, "Sucessfully Connected!", Toast.LENGTH_LONG).show();         
        Intent lListFiles = new Intent(mContext,ListFilesActivity.class);       
        lListFiles.putExtra("ServerConnect", mServerConnect);
        lListFiles.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        mContext.startActivity(lListFiles);
    }

The connect Method in my ServerConnect Class:

public boolean connectServer()
    {
        try
        {
            mSession=mSsh.getSession(mUsername,mServerIP,mServerPort);
            mSession.setConfig(mConfig);
            mSession.setPassword(mPassword);
            mSession.connect();         
            mChannel = mSession.openChannel("sftp");
            mChannel.connect();
        }
}

How I get the Object in the other Activity:

mLogin = (ServerConnect) getIntent().getSerializableExtra("ServerConnect"); 

I tried it with Serializable, but it doesnt' work because I cant't implement the Serializable interface in the java.lang.Object Class.... I also tried it with Parcelable, but I don't know how to write the custom Class into a Parcable. Are there other ways to pass the Object from the Login Activity to another?

Logcat:

03-03 13:35:40.583: E/AndroidRuntime(4186): FATAL EXCEPTION: main
03-03 13:35:40.583: E/AndroidRuntime(4186): Process: com.example.securebox, PID: 4186
03-03 13:35:40.583: E/AndroidRuntime(4186): java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.example.securebox.ServerConnect)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.Parcel.writeSerializable(Parcel.java:1312)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.Parcel.writeValue(Parcel.java:1260)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.Parcel.writeArrayMapInternal(Parcel.java:618)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.Bundle.writeToParcel(Bundle.java:1665)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.Parcel.writeBundle(Parcel.java:632)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.content.Intent.writeToParcel(Intent.java:7013)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2076)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1419)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.app.ContextImpl.startActivity(ContextImpl.java:1039)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.app.ContextImpl.startActivity(ContextImpl.java:1021)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at com.example.securebox.ASYNCLogin.onPostExecute(ASYNCLogin.java:32)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at com.example.securebox.ASYNCLogin.onPostExecute(ASYNCLogin.java:1)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.AsyncTask.finish(AsyncTask.java:632)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.AsyncTask.access$600(AsyncTask.java:177)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.Handler.dispatchMessage(Handler.java:102)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.Looper.loop(Looper.java:137)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.app.ActivityThread.main(ActivityThread.java:4998)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.lang.reflect.Method.invokeNative(Native Method)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.lang.reflect.Method.invoke(Method.java:515)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at dalvik.system.NativeStart.main(Native Method)
03-03 13:35:40.583: E/AndroidRuntime(4186): Caused by: java.io.NotSerializableException: java.lang.Object
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1364)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.Parcel.writeSerializable(Parcel.java:1307)
03-03 13:35:40.583: E/AndroidRuntime(4186):     ... 22 more

No correct solution

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top