访问所有类的用户名:Android

时间:2014-01-06 03:28:56

标签: java php android json sharedpreferences


背景资料:

我正在开发一个小应用程序。它现在的工作方式是应用程序启动的那一刻,用户将被提示主要活动。然后,用户点击登录按钮,提示登录活动。现在在我的登录活动中,我设置了一个获取用户用户名的Intent,然后将其存储在共享首选项中。如果登录成功,则用户转到用户看到的mainloggedinpage:[欢迎回来{username}]


问题如下:

如果用户通过loginactivity访问mainloggedinpage,那么您可以轻松查看他的用户名,这正是我想要的。但问题是,在主页面上,我还有其他按钮可用于其他活动。当用户点击任何这些活动然后返回到mainloggedin页面时,您看到的只有:[Welcome Back {}]。他的用户名不再显示。


我的问题:

任何人都可以建议一个快速修复,允许我显示用户名,这样即使用户从mainloggedinpage转到另一个活动,然后回到mainloggedinpage,用户仍会看到:[Welcome Back {username}] ?


我的登录活动代码[这是我获取用户名的地方]:

    @Override
    protected String doInBackground(String... args) {
        // TODO Auto-generated method stub
         // Check for success tag
        int success;
        String username = user.getText().toString();
        String password = pass.getText().toString();
        try {
            // Building Parameters
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("username", username));
            params.add(new BasicNameValuePair("password", password));

            Log.d("request!", "starting");
            // getting product details by making HTTP request
            JSONObject json = jsonParser.makeHttpRequest(
                   LOGIN_URL, "POST", params);

            // check your log for json response
            Log.d("Login attempt", json.toString());     

            // json success tag
            success = json.getInt(TAG_SUCCESS);
            if (success == 1) {

                Log.d("Login Successful!", json.toString());
                // save user data
                SharedPreferences sp = PreferenceManager
                        .getDefaultSharedPreferences(Login.this);
                Editor edit = sp.edit();
                edit.putString("username", username);
                edit.commit();

                Intent i = new Intent(Login.this, mainpage.class);
                i.putExtra("Welcome back, username", username);
                finish();
                startActivity(i);
                return json.getString(TAG_MESSAGE);
            }else{
                Log.d("Login Failure!", json.getString(TAG_MESSAGE));
                return json.getString(TAG_MESSAGE);

            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return null;

    }

我的mainloggedinActivity代码[这是显示用户名的地方]:

    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mainpage);

    msuggestions = (Button) findViewById(R.id.btn_suggestions);
    msuggestions.setOnClickListener(this);

    mprayertimes = (Button)findViewById(R.id.btn_activityone);
    mprayertimes.setOnClickListener(this);

    mqibladirection =(Button)findViewById(R.id.btn_activitytwo);
    mqibladirection.setOnClickListener(this);

    mnewsboard = (Button) findViewById(R.id.newsboard);
    mnewsboard.setOnClickListener(this);

    mhadiths = (Button) findViewById(R.id.btn_activitythree);
    mhadiths.setOnClickListener(this);

    mchat = (Button) findViewById(R.id.btn_discussion);
    mchat.setOnClickListener(this);

    mallahnames = (Button) findViewById(R.id.btn_activityfour);
    mallahnames.setOnClickListener(this);

    // Get Username Start
    TextView txt_loggedName = (TextView) findViewById(R.id.txt_loggedName);

    Intent intent = getIntent();
    String username  = intent.getStringExtra("Welcome back, username");
    txt_loggedName.setText(username);
    // Get Username End


    buttonLogout = (Button) findViewById(R.id.logout);
    buttonLogout.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
         mPreferences = getSharedPreferences("CurrentUser", MODE_PRIVATE); 
         SharedPreferences.Editor editor=mPreferences.edit();
         editor.remove("username");
         editor.remove("password");
         editor.commit();
         Message myMessage=new Message();
                myMessage.obj="NOTSUCCESS";
                handler.sendMessage(myMessage); 
         finish();
        }
  });

任何人都可以帮助我,那么当用户访问主页并单击其中一个按钮然后返回主页时,它仍会显示他的用户名吗? :)

2 个答案:

答案 0 :(得分:0)

您应该从SharedPreferences中获取它,而不是从intent获取用户名,因为您已将其保存在那里。

答案 1 :(得分:0)

不要依赖Intent额外存储用户名,因为只有在用户登录后才能直接填充。

替换它:

Intent intent = getIntent();
String username  = intent.getStringExtra("Welcome back, username");
txt_loggedName.setText(username);

使用:

String username = PreferenceManager.getDefaultSharedPreferences(this).getString("username", "guest");
txt_loggedName.setText("Welcome back, " + username);