如何通过所有活动传递参数?

时间:2012-08-26 10:57:45

标签: android android-intent android-activity android-context

我正在开发一个移动应用程序,我需要通过所有活动提供用户对象,我不想使用Intent从每个活动发送到另一个活动。

有人可以帮我吗?

3 个答案:

答案 0 :(得分:3)

如果您可以将其存储在:

我认为SharedPreferences实现起来要简单得多。 这是一个例子,你可以如何创建一个静态函数,你可以从你的所有活动中访问:

public class UserCreator
{
    public static User getUser(Context context)
    {
        SharedPreferences prefs = context.getSharedPreferences("Name", Context.MODE_PRIVATE);

        //Check if the user is already stored, if is, then simply get the data from
        //your SharedPreference object.

        boolean isValid = prefs.getBoolean("valid", false);

        if(isValid)
        {
            String userName = prefs.getString("username", "");
            String passWord = prefs.getString("password", "");
            ...
            return new User(userName, passWord,...); 
        }
        //If not, then store data
        else
        {
            //for example show a dialog here, where the user can log in.
            //when you have the data, then:

            if(...login successful...)
            {
                SharedPreferences.Editor editor = prefs.edit();
                editor.putString("username", "someusername");
                editor.putString("password", "somepassword");
                editor.putBoolean("valid", true);
                ...
                editor.commit();
            }
            // Now, if the login was successful, then you can recall this function,
            // and it will return a valid user object.
            // if it was not, then it will show the login-dialog again.
            return getUser(context);
        }
    }
}

然后从你所有的活动开始:

User user = UserCreator.getUser(this);

答案 1 :(得分:1)

编写一个扩展Application类的类。并将全局参数放在那里。这些参数在应用程序上下文中有效。

答案 2 :(得分:1)

只需将该对象设为“公共静态”即可。 然后在其他活动中访问它,如:

PreviousActivity.userobj