如何在类android中获取会话变量

时间:2016-10-30 04:29:01

标签: android session

我正在尝试将会话存储变量放入类中。请查看我的实际代码

 public class GetDataAdapter {

        public String ImageServerUrl;
        public String ImageTitleName;
        public String ImageUrlName;



        public String getImageServerUrl() {
            return ImageServerUrl;
        }

        public void setImageServerUrl(String imageServerUrl) {
            this.ImageServerUrl = imageServerUrl;
        }

        public String getImageTitleName() {
            return ImageTitleName;
        }

        public void setImageTitleNamee(String Imagetitlename) {
            this.ImageTitleName = Imagetitlename;
        }

        public String getImageUrlName() {
            return ImageUrlName;
        }

        public void setImageUrlNamee(String Imageurlname) {
            this.ImageUrlName = Imageurlname;
        }

   } 

现在我在会话中存储了一个值,我想在上面的代码中使用。 Imageurlname是从数据库中获取的URL。我想在网址上添加额外内容。例如

这是我的URl Getting form数据库http://example.com?id= 我在会话中存储了用户ID,因此将两个url合并为http://example.com?id=5

请参阅我修改后的代码

public class GetDataAdapter extends AppCompatActivity {

    public String ImageServerUrl;
    public String ImageTitleName;
    public String ImageUrlName;

    private Session session;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        session = new Session(GetDataAdapter.this);

        HashMap<String, String> user = session.getUserDetails();
        final String Uid = user.get(session.KEY_UID);

    }


    public String getImageServerUrl() {
        return ImageServerUrl;
    }

    public void setImageServerUrl(String imageServerUrl) {
        this.ImageServerUrl = imageServerUrl;
    }

    public String getImageTitleName() {
        return ImageTitleName;
    }

    public void setImageTitleNamee(String Imagetitlename) {
        this.ImageTitleName = Imagetitlename;
    }

    public String getImageUrlName() {
        return ImageUrlName;
    }

    public void setImageUrlNamee(String Imageurlname) {
        this.ImageUrlName = Imageurlname + Uid;
    }


}

Uid正在收到错误。我希望你能理解。

2 个答案:

答案 0 :(得分:1)

看起来问题在于保存用户ID就是因为这个原因。

  1. 使用实例变量来存储只有在获得相同对象时才能获得的用户ID
  2. 以下是解决方案:

    解决方案1: 使用静态变量

    public class Example {
    
        //this is the default value which will there stored before we are setting our actual userId
    
        public static String USER_ID="DefaultId";
    }
    

    您可以通过这种方式设置和访问值。

    Log.d("Default Value",Example.USER_ID);
    
            //setting user id here
            Example.USER_ID = "Manikanta Garikipati";
    
            Log.d("Updated value",Example.USER_ID);
    

    解决方案2:使用共享偏好设置。

    正如你已经知道的那样,无论如何我会解释。

    如果您的问题仍未解决,请在下面进行评论。

    以下是问题的简要摘要

    问题不在共享偏好中,也不在任何存储中。

    不是单独创建bean并将值设置为bean,而是使用Activity等扩展bean ..这使得事情变得混乱......

    那些想要完整解决方案的人可以通过相关对话进行讨论。

答案 1 :(得分:0)

应用程序类适合您。使用它并保存您的应用程序级别数据,如下所示:

public class WhatEverApp extends Application
{
    String mApplicationLevelVar = "Hello";
}

WhatEverApp将是manifest.xml

中使用的应用的名称

Look这里有关于Application类的详细讨论。