2012-09-19 12 views
6

मैं ऐप का उपयोग शुरू करने से पहले उपयोगकर्ता द्वारा लॉग इन किया गया है या नहीं, यह देखने के लिए साझा संदर्भों का उपयोग करने का प्रयास कर रहा हूं। मैं जब में उपयोगकर्ता लॉग shredpreferences में उपयोगकर्ता नाम को बचाने के।एंड्रॉइड - साझा संदर्भ वापस शून्य मान

Login.java

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.login);  
     Button btnLogin = (Button) findViewById(R.id.buttonlogin);  
     btnLogin.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View adapt) { 
       EditText usernameEditText = (EditText) findViewById(R.id.EditUserName); 
       userName = usernameEditText.getText().toString(); 
       EditText passwordEditText = (EditText) findViewById(R.id.EditPassword); 
       userPassword = passwordEditText.getText().toString();    
       if (userName.matches("") && userPassword.matches("")) { 
        toast("Please enter Username and Password"); 
        return; 
       } else if (userName.matches("") || userName.equals("")) { 
        toast("Please enter Username"); 
        return; 
       } else if (userPassword.matches("") || userPassword.equals("")) { 
        toast("Please enter Password"); 
        return; 
       } else { 
        SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 
        SharedPreferences.Editor editor = sharedPreferences.edit(); 
        editor.putString("MEM1", userName); 
        editor.commit(); 
        new DownloadFilesTask().execute(); 
       }   
      } 
     }); 
    } 

    private void toast(String text) { 
     Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); 
    } 

    private class DownloadFilesTask extends AsyncTask<Void, Void, Void> { 
     protected void onPreExecute() { 
     } 

     protected void onPostExecute(Void result) { 
      toast("user logged in"); 
      startActivity(new Intent(Login.this, MainActivity.class)); 
      finish(); 
     } 

     @Override 
     protected Void doInBackground(Void... params) {   
      return null; 
     } 
    } 

} 

और मैं उपयोगकर्ता नाम मान की जाँच करने से पहले मैं अपने MainActivity शुरू करने की कोशिश की।

SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 
    String username =sharedPreferences.getString("MEM1", ""); 
    if(username.equalsIgnoreCase("")||username.length()==0) 
    { 
     toast("username is null"); 
     startActivity(new Intent(MainActivity.this, Login.class)); 
     finish(); 
    } 

लेकिन उपयोगकर्ता नाम हमेशा शून्य है। कृपया मदद करे। धन्यवाद

+0

बुला तो अपना उपयोगकर्ता नाम कभी अशक्त था, क्योंकि यह एक शून्य मान की एक विधि कॉल करने के लिए संभव नहीं है अपने अनुप्रयोग क्रैश हो सकता वरीयताओं के लिए नाम निर्धारित किया है। और यदि आप रिक्त तारों की जांच करना चाहते हैं तो यह उपयोग करना बेहतर है()। –

उत्तर

9

उपयोगकर्ता नाम साझा करने के लिए अपने कोड के बजाय कोड नीचे कोड लिखें।

SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE); 
SharedPreferences.Editor editor = myPrefs.edit(); 
editor.putString("MEM1", userName); 
editor.commit(); 

और नीचे दिए गए कोड का प्रयोग करें प्राप्त पसंद वेल्यू के लिए।

SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE); 
String username = myPrefs.getString("MEM1",""); 
+0

@ chinna_82 लॉग इन करें उपयोगकर्ता नाम लॉग इन करें और मुझे बताएं कि क्या हुआ ... –

17

कॉलिंग getPreferences मतलब है कि आप एक ही गतिविधि में होना है। getSharedPreferences का उपयोग करके आप गतिविधियों के बीच प्राथमिकताओं को साझा करने की अनुमति देता है। तुम बस जब getSharedPreferences("Pref name here", MODE_PRIVATE);

1
private final String TAXI_SPREF = "TAXI_SHARED_PREFERENCES"; 

//set-save data to shared preferences 
SharedPreferences.Editor sPEditor = getSharedPreferences(TAXI_SPREF, MODE_PRIVATE).edit(); 
sPEditor.putInt("USERID", etUserID.getText().toString()); 
sPEditor.putString("EMAIL", etEmail.getText().toString()); 
sPEditor.apply(); 

//get data from shared preferences 

SharedPreferences sharedPreferences = getSharedPreferences(TAXI_SPREF, MODE_PRIVATE); 
int userID = sharedPreferences.getInt("USERID", 0); 
string email = sharedPreferences.getString("EMAIL", 0); 
////////  or   ///// 
String email = getSharedPreferences(TAXI_SPREF, MODE_PRIVATE).getString("EMAIL","EMPTY"); 
    if (!email.equals("EMPTY")){ 
     etEmail.setText(email); 
    } 
संबंधित मुद्दे