2012-04-20 111 views
10

मैं अपने संस्थान के लिए एक ऐप बनाना चाहता हूं।बैक बटन/कुंजी दबाकर लॉगिन लेआउट पर लौटने से कैसे बचें?

समस्या यह है: मेरे आवेदन में दो लेआउट होंगे (लॉगिन और डैशबोर्ड)।

छात्र लॉगिन फॉर्म को सही ढंग से भर सकते हैं, डैशबोर्ड दर्ज कर सकते हैं, बटन दबा सकते हैं, और अन्य फ़ील्ड भर सकते हैं। लेकिन यदि उपयोगकर्ता बैक बटन दबाता है, तो उसे लॉगिन स्क्रीन पर वापस नहीं जाना चाहिए, लेकिन डैशबोर्ड में रहना चाहिए, या उसमें असफल होना, एप्लिकेशन से बाहर निकलना।

फिर यदि कोई छात्र एप्लिकेशन को फिर से खोलता है और यह पहले ही लॉग इन हो जाता है, तो उसे स्वचालित रूप से डैशबोर्ड पर रीडायरेक्ट किया जाना चाहिए, न कि लॉगिन स्क्रीन, जब तक कि उपयोगकर्ता डैशबोर्ड पर लॉगआउट बटन दबाए, फिर उसे वापस लॉगिन स्क्रीन पर रीडायरेक्ट करें ।

आप यह कैसे कर सकते हैं?

संपादित करें:मैं 2 उद्देश्य और 2 गतिविधियों, कार्यान्वित और नए सवाल पैदा हुई मुझे यह है कि जब मैं घर बटन दबाएँ और taskmanager से मैं ऐप खोलने वाली गतिविधि के छोड़ दिया गया था में खुला है, लेकिन अगर पहली गतिविधि से ऐप को फिर से खोलने के लिए आइकन से खोलें, जैसा कि आखिरी में खोलने के लिए किया गया था?

+0

यदि आपका मूल प्रश्न उत्तर दिया गया है, तो आपको एक उत्तर स्वीकार करना चाहिए और अपने संपादन के लिए एक नया प्रश्न खोलना चाहिए। यह उस तरह से अधिक दृश्यता मिलेगा। –

+0

इस आदमी के लिए धन्यवाद, आपका जवाब यह ठीक है लेकिन मैं नहीं चाहता था! – SoldierCorp

+0

@soldierCorp मुझे एक ही समस्या है। क्या आप इस मुद्दे को हल करने में मेरी मदद कर सकते हैं। मैं उस समाधान के साथ उलझन में हूं जिसे आपने स्वीकार कर लिया है। https://stackoverflow.com/questions/45183038/restrict-multiple-login-for-same-user-without-logout। – seon

उत्तर

5

मैंने SharedPreferences का उपयोग करके कुछ समान रूप से लागू किया है।

LoginActivity

SharedPreferences settings; 
public void onCreate(Bundle b) { 
    super.onCreate(b); 
    settings = getSharedPreferences("mySharedPref", 0); 
    if (settings.getBoolean("connected", false)) { 
     /* The user has already login, so start the dashboard */ 
     startActivity(new Intent(getApplicationContext(), DashBoardActivity.class)); 
    } 
    /* Put here the login UI */ 
} 
... 
public void doLogin() { 
    /* ... check credentials and another stuff ... */ 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putBoolean("connected", true); 
    editor.commit(); 
} 

अपने DashBoardActivity ओवरराइड onBackPressed विधि में: मैं ऐसा किया। यह आपको DashBoardActivity से आपकी होम स्क्रीन पर ले जाएगा।

@Override 
public void onBackPressed() { 
    Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_HOME); 
    startActivity(intent); 
} 

उम्मीद है कि यह मदद करता है।

4

एक विचार है कि शुरुआत में डैशबोर्ड लॉन्च करना और उसके बाद लॉगिन को नए Activity में लॉन्च करना है यदि आप यह पता लगाते हैं कि उपयोगकर्ता लॉग इन नहीं है। तो आप आवश्यकतानुसार लॉगिन संवाद को छोड़ सकते हैं। यदि आप अपने मेनिफेस्ट में Activity लॉगिन पर noHistory="true" सेट करते हैं, तो इसे वापस दबाए जाने से फिर से दिखाई देने से रोका जाएगा।

1

गतिविधि को ढेर के पीछे इस गतिविधि वाले कार्य को ले जाएं। कार्य के भीतर गतिविधि का क्रम अपरिवर्तित है।

@Override 
public void onBackPressed() { 
    moveTaskToBack(true); 
    super.onBackPressed(); 
}