2013-02-12 17 views
5

के बीच पास परिवर्तनीय मुझे गैर-गतिविधि वर्ग से (नाम) (एंड्रॉइड गतिविधि) कक्षा में एक चर से गुजरने की आवश्यकता है। पाठ दृश्य में पारित वैरिएबल मान प्रदर्शित करें .. कृपया मुझे बताएं कि इस उदाहरण से क्या करना है। यह कैसे एंड्रॉयड गतिविधि के लिए पारित करने के लिएगैर-गतिविधि वर्ग के बीच एंड्रॉइड गतिविधि वर्ग

public class around(non-activity class) 
{ 
    String name = "arjun"; 
    //how to pass this name value to an below activity 
    nameget nam = new nameget(); 
    String new = nam.get(name); 
} 

public class nameget extends Activity(android activity class) 
{ 
    public String get(String name) 
    { 
     String got = name; 
     TextView t1 = (TextView)findViewById(R.id.textView1); 
     t1.setText(name); 
    } 
} 
+0

प्रश्न यह है कि कक्षा परिभाषित कहां है और किस संदर्भ में तत्कालता से आप "चर" को "पास" करना चाहते हैं। साथ ही, चर _passed_ नहीं हो सकते हैं, वे _shared_ हो सकते हैं; दूसरी ओर, _values_ और _references_ पारित किया जा सकता है। तो क्या आपके पास इसके बारे में कोई विशिष्ट आवश्यकता है। –

+0

क्या आपके पास उस कक्षा का उदाहरण है? यदि हाँ स्ट्रिंग को पुनर्प्राप्त करने के लिए गेटटर का उपयोग करें और सेटटेक्स्ट के अंदर इसका उपयोग करें। उदाहरण के लिए t1.setText (around.getString()); – Tobrun

+0

कक्षा एक asynctask है? या इसे सिर्फ बुलाया जाता है? यदि आप इसे अभी कॉल करते हैं, तो आप किसी भी सामान्य विधि में मूल्य वापस कर सकते हैं। बस एक गेटटर बनाओ। – Gjordis

उत्तर

2

इस प्रयास करें, तो आप गतिविधि कक्षा में अपने गैर गतिविधि वर्ग की घोषणा की कोशिश करो।

public class around(non-activity class) 
{ 
Public static String name; 
name = "arjun"; 
//how to pass this name string to an below activity 
} 

public class nameget extends Activity(android activity class) 
    { 
    around ar = new around(); 
    //declare non activity class here 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
TextView t1 = (TextView)findViewById(R.id.textView1); 
t1.setText(ar.name); 
} 
} 
2

इस

public class around(non-activity class) 
    { 
    public static String name = "arjun"; 
     //how to pass this name string to an below activity 
    } 

    public class nameget extends Activity(android activity class) 
    { 
     TextView t1 = (TextView)findViewById(R.id.textView1); 
//your class name around 
     t1.setText(around.name); 
    } 
+0

क्या आपको अपना जवाब मिला है –

1

.. आप बस गैर गतिविधि वर्ग की तरह में अपने चर के लिए गेटर और सेटर उत्पन्न कर सकते हैं

public String getName(){ 
    return name; 
} 

public void setName(String name){ 
    this.name = name; 
} 
अब कहीं से भी

आप कर सकते हैं के रूप में नाम के लिए/मान सेट ..

Arround ar = new Arround() 
ar.setName("Aruva"); //To set name 
ar.getName(); // To get 

अपनी गतिविधि पसंद है में ..

t1.setText(ar.getName().toString()); 

और आपकी गैर-गतिविधि कक्षा कहीं भी या तो एक ही पैकेज में या किसी अन्य पैकेज में src फ़ोल्डर में बनाई जा सकती है ..

0

काफी अजीब सवाल है क्योंकि आपका डिज़ाइन यहां स्पष्ट नहीं है। आप इरादे बंडल के माध्यम से गतिविधि के लिए पैरामीटर पास करते हैं। गतिविधि शुरू करते समय आप उन्हें केवल पास कर सकते हैं। गतिविधि केवल कुछ संदर्भ वस्तु (99% मामलों में अन्य गतिविधि) पर शुरू की जा सकती है।

आप कुछ गैर-गतिविधि वर्ग से गतिविधि शुरू कर सकते हैं जब तक कि आपके पास संदर्भ तक पहुंच हो। गतिविधि जिसे आप शुरू करेंगे, यह जानने की जरूरत है कि बैक बटन प्रेस के मामले में यह माता-पिता कौन है।

जब आप गतिविधि के लिए डेटा पास करने के जबकि यह शुरू करने से देखना चाहते हैं: How do I pass data between Activities in Android application?

जब यह मामला यह नहीं है - अपने मामले का वर्णन कृपया अपने गैर गतिविधि वर्ग क्या है और यह कैसे गतिविधि है कि आप चाहते हैं से संबंधित है डेटा पास करें।

0

ऐसी समस्याओं के लिए सबसे अच्छा तरीका एक घटना सूखे वास्तुकला है। आप किसी भी घटना लाइब्रेरी का उपयोग कर सकते हैं, मैं eventBus का सुझाव दूंगा। (- ठहराव पर फिर से शुरू पर)

(eventbus के दायरे में) एक sticky event एक नाम संपत्ति

अपनी गतिविधि सक्रिय होने के दौरान यह बात सुनो जाएगा साथ NameChangedEvent बुलाया पैदा करते हैं। जब नाम बदल दिया जाता है, तो आप इस घटना को उदा।

EventBus.getDefault().post(new NameChangedEvent(name));

अपनी गतिविधि इस पकड़ने और दृश्य अद्यतन करेगा। यह क्रिएट विधि पर इस घटना का नवीनतम संस्करण भी पढ़ सकता है।

यह निश्चित रूप से एक ओवरकिल है यदि आप इसे केवल 1 फ़ील्ड के लिए करने की कोशिश कर रहे हैं। लेकिन कई ऐप्स को डेटा परिवर्तनों को संभालने और उनके यूआई को अपडेट करने की आवश्यकता होती है और ऐसा करने के लिए ईवेंट सबसे अच्छा तरीका (imho) होता है। इससे आपको अपने ऐप लॉजिक और यूआई को कम से कम जोड़ा जा सकता है।(मजा)

Class<?> MyClassSave; 

MyClassSave = MainActivity.class; 

और तुम से .class

आप कर सकते हैं सभी मूल्यों को प्राप्त कर सकते हैं:

0

यदि आप प्रकार "कक्षा"

उदाहरण के एक चर को बचाने के लिए और अधिक आसान है सार्वजनिक/निजी (स्थिर), या बंडल/serializable/Obj

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