2011-11-03 15 views
5

जब कोई ऐप लॉन्च या फिर से शुरू होता है, तो मैं उपयोगकर्ता को 'SharedPrefences' में एक चर सेट पर आधारित एक विशिष्ट 'गतिविधि' पर रीडायरेक्ट करना चाहता हूं।विशिष्ट गतिविधि के साथ एंड्रॉइड ऐप लॉन्च करें

private void launchRedirect(Context ctxt) { 

    Integer status = AppPreferences.getStatus(this); 
    Intent i = new Intent(MainActivity.this, Activity1.class); 

    switch (status) { 
    case 0: 
     i = new Intent(MainActivity.this, Activity2.class); 
    case 1: 
     i = new Intent(MainActivity.this, Activity3.class); 
    case 2: 
     i = new Intent(MainActivity.this, Activity4.class); 
    case 3: 
     i = new Intent(MainActivity.this, Activity5.class);  
    } 
    startActivity(i); 
} 

और फिर मैं में हर गतिविधि के लिए प्रत्येक 'onResume' विधि में इस विधि कह सकते हैं:

इस मैं एक विधि है कि SharedPreferences स्थिति चर जांच करता है और सही गतिविधि पर रीडायरेक्ट होने विचार कर रहा था ऐसा करने के लिए मेरे ऐप:

public void onResume(Bundle savedInstanceState) { 
    launchRedirect(this); 
} 

इसका मतलब यह होगा कि उपयोगकर्ता तकनीकी रूप से पिछले गतिविधि वापस नहीं जा सकते, क्योंकि जब वे यह कहते हैं, यह onResume कहता है, और यह कहा गया है कि वर्तमान उपयोगकर्ता के साथ मेल खाती पुनः निर्देशित किया जाएगा।

मुझे लगता है कि इससे कुछ परिपत्र बग हो सकते हैं - क्या ऐसा करने का एक बेहतर तरीका है?

+0

अच्छा प्रश्न इसलिए +1 –

उत्तर

5

मेरा मानना ​​है कि यह करने का सामान्य तरीका है, सिवाय इसके कि आप फिनिश() विधि को भी जोड़ सकते हैं, अगर आपको इस स्थिति में मुख्य गतिविधि को बंद करने की आवश्यकता है।

इसके अलावा, मत भूलना तोड़ बयान:

private void launchRedirect(Context ctxt) { 

    Integer status = AppPreferences.getStatus(this); 
    Intent i = new Intent(MainActivity.this, Activity1.class); 

    switch (status) { 
    case 0: 
    i = new Intent(MainActivity.this, Activity2.class); 
    break; 
    case 1: 
    i = new Intent(MainActivity.this, Activity3.class); 
    break; 
    case 2: 
    i = new Intent(MainActivity.this, Activity4.class); 
    break; 
    case 3: 
    i = new Intent(MainActivity.this, Activity5.class); 
    break; 
    } 
    startActivity(i); 
    if (/* check if MainActivity should be closed */) { 
    finish(); 
    } 
} 
+1

आह अच्छा अंक। धन्यवाद। भी, मेरे पास अभी तक मतदान करने के लिए पर्याप्त प्रतिनिधि अंक नहीं हैं, अन्यथा मैं चाहता हूं! – Asha

+0

हाँ, इस सवाल ने मुझे पर्याप्त प्रतिनिधि अंक दिए हैं :) आपकी मदद के लिए धन्यवाद – Asha

+1

आपका बहुत स्वागत है :) क्या आप मेरे उत्तर को सही के रूप में भी स्वीकार कर सकते हैं? – morphium

1

कृपया सुनिश्चित करें कि आप अपने नेविगेशन activtiy के अनुसार वरीयता मूल्य अद्यतन कर रहे हैं। यह गतिविधि लॉन्चिंग के लिए आपके अनावश्यक चेक को बचाएगा।

संबंधित मुद्दे