मैंने intent
का उपयोग student name
को प्रारंभिक StudentNameInput
गतिविधि से StudentInitialActivity
गतिविधि में पास करने के लिए किया है। दूसरी गतिविधि प्रदर्शित करती है कि पिछली गतिविधि में उपयोगकर्ता के पास जो भी नाम इनपुट था। एक बार जब उपयोगकर्ता लॉग इन करता है तो मेरा कोड नाम को ठीक से प्रदर्शित कर रहा है। हालांकि, जब मैं ऐप बंद करता हूं, तो नाम null
के रूप में प्रदर्शित होता है। मेरा सवाल यह है कि मैं ऐप को बंद करने और फिर से शुरू करने के बाद भी नाम कैसे प्रदर्शित करता रहूं। प्रारंभिक स्टार्टअप का ट्रैक रखने के लिए मैंने पहले ही अपने कोड में shared preferences
लागू कर दिया है और इसलिए, ऐप हर बार ऐप खोले जाने पर नाम के लिए संकेत नहीं देता है।
StudentNameInput
गतिविधि:
class StudentNameInput : AppCompatActivity(), View.OnClickListener {
private lateinit var sharedPref: SharedPreferences
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
sharedPref = getSharedPreferences("YOUR_PREF_NAME", Context.MODE_PRIVATE)
if (wasUserNameSaved()) {
val intent = Intent(this, StudentInitialActivity::class.java)
startActivity(intent)
finish()
return
}
setContentView(R.layout.activity_student_name_input)
btnStudentLogIn.setOnClickListener(this)
}
private fun validate(): Boolean {
if (txt_student_name.text.toString().isEmpty()) {
txt_student_name.error = "Name cannot be empty"
return false
}
return true
}
override fun onClick(v: View?) {
val editTextStudentName = findViewById<EditText>(R.id.txt_student_name);
when (v?.id) {
R.id.btnStudentLogIn -> {
if (validate()) {
Log.i(null, "setOnClickListener")
sharedPref.edit().putString("user_name", txt_student_name.text.toString())
.apply()
val studentName = editTextStudentName.text.toString();
val intent = Intent(this@StudentNameInput, StudentInitialActivity::class.java)
intent.putExtra("Name", studentName);
startActivity(intent)
}
}
}
}
private fun wasUserNameSaved(): Boolean {
return sharedPref.getString("user_name", "").isNotEmpty()
}
}
StudentInitialActivity
गतिविधि:
class StudentInitialActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_student_initial)
val intent = intent
val name = intent.getStringExtra("Name")
val studentNameTextView = findViewById<TextView>(R.id.textViewStudentName)
textViewStudentName.text = "Logged in as: " + name
btnScanForClasses.setOnClickListener {
Log.i(null, "setOnClickListener")
val intent = Intent(this, DeviceScanActivity::class.java)
startActivity(intent)
}
btnRecords.setOnClickListener {
startActivity(Intent(this, StudentRecords::class.java))
}
}
}
1 उत्तर
चूंकि आप पहले से ही छात्र नाम इनपुट गतिविधि में उपयोगकर्ता नाम संग्रहीत कर रहे हैं और आपने यह जांचने के लिए एक शर्त लिखी है कि पहले से संग्रहीत नाम सीधे छात्र प्रारंभिक गतिविधि पर ले जाता है या नहीं। तो आप संग्रहीत नाम प्राप्त करने के लिए गायब हैं, मैं आपको यह समाधान सुझाऊंगा-
छात्रनाम इनपुट में इस ब्लॉक में उपयोगकर्ता का नाम इरादा में जोड़ें
if (wasUserNameSaved()){
val intent = Intent(this, StudentInitialActivity::class.java)
intent.putExtra("Name", sharedPref.getString("YOUR_PREF_NAME", ""))
startActivity(intent)
finish()
return
}
संबंधित सवाल
नए सवाल
android
एंड्रॉइड Google का मोबाइल ऑपरेटिंग सिस्टम है, जिसका उपयोग प्रोग्रामिंग या डिजिटल डिवाइस (स्मार्टफोन, टैबलेट, ऑटोमोबाइल्स, टीवी, वियर, ग्लास, IoT) को विकसित करने के लिए किया जाता है। एंड्रॉइड से संबंधित विषयों के लिए, एंड्रॉइड-विशिष्ट टैग जैसे कि एंड्रॉइड-इरादे, एंड्रॉइड-गतिविधि, एंड्रॉइड-एडॉप्टर आदि का उपयोग करें। विकास या प्रोग्रामिंग के अलावा अन्य प्रश्नों के लिए, लेकिन एंड्रॉइड फ्रेमवर्क से संबंधित हैं, इस लिंक का उपयोग करें: https: // android.stackexchange.com।