How to send an object from one Android Activity to another using Intents?

后端 未结 30 3601
-上瘾入骨i
-上瘾入骨i 2020-11-21 04:47

How can I pass an object of a custom type from one Activity to another using the putExtra() method of the class Intent?

30条回答
  •  无人共我
    2020-11-21 05:18

    There are a couple of ways by which you can access variables or objects in other classes or Activity.

    A. Database

    B. shared preferences.

    C. Object serialization.

    D. A class that can hold common data can be named Common Utilities it depends on you.

    E. Passing data through Intents and Parcelable Interface.

    It depends upon your project needs.

    A. Database

    SQLite is an Open Source Database which is embedded into Android. SQLite supports standard relational database features like SQL syntax, transactions, and prepared statements.

    Tutorials -- http://www.vogella.com/articles/AndroidSQLite/article.html

    B. Shared Preferences

    Suppose you want to store username. So there will be now two things a Key Username, Value Value.

    How to store

     // Create an object of SharedPreferences.
     SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
     //now get Editor
     SharedPreferences.Editor editor = sharedPref.edit();
     //put your value
     editor.putString("userName", "stackoverlow");
    
     //commits your edits
     editor.commit();
    

    Using putString(),putBoolean(),putInt(),putFloat(),putLong() you can save your desired dtatype.

    How to fetch

    SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
    String userName = sharedPref.getString("userName", "Not Available");
    

    http://developer.android.com/reference/android/content/SharedPreferences.html

    C. Object Serialization

    Object serialization is used if we want to save an object state to send it over the network or you can use it for your purpose also.

    Use java beans and store in it as one of his fields and use getters and setter for that

    JavaBeans are Java classes that have properties. Think of properties as private instance variables. Since they're private, the only way they can be accessed from outside of their class is through methods in the class. The methods that change a property's value are called setter methods, and the methods that retrieve a property's value are called getter methods.

    public class VariableStorage implements Serializable  {
    
        private String inString ;
    
        public String getInString() {
            return inString;
        }
    
        public void setInString(String inString) {
            this.inString = inString;
        }
    
    
    }
    

    Set the variable in your mail method by using

    VariableStorage variableStorage = new VariableStorage();
    variableStorage.setInString(inString);
    

    Then use object Serialzation to serialize this object and in your other class deserialize this object.

    In serialization, an object can be represented as a sequence of bytes that includes the object's data as well as information about the object's type and the types of data stored in the object.

    After a serialized object has been written into a file, it can be read from the file and deserialized that is, the type information and bytes that represent the object and its data can be used to recreate the object in memory.

    If you want a tutorial for this to refer this link

    http://javawithswaranga.blogspot.in/2011/08/serialization-in-java.html

    Get variable in other classes

    D. CommonUtilities

    You can make a class by your self which can contain common data which you frequently need in your project.

    Sample

    public class CommonUtilities {
    
        public static String className = "CommonUtilities";
    
    }
    

    E. Passing Data through Intents

    Please refer to this tutorial for this option of passing data.

    http://shri.blog.kraya.co.uk/2010/04/26/android-parcel-data-to-pass-between-activities-using-parcelable-classes/

提交回复
热议问题