2012-10-25 12 views
31

की गतिविधि चर का उपयोग करने की गतिविधि में मेरे पास है:कैसे एक टुकड़ा एंड्रॉयड

public class tabsmain extends Activity{ 
    public static Context appContext; 

    public boolean lf_ch=false; 

    public void onCreate(Bundle savedInstanceState){ 

मैं पहुँच सकते हैं और संभवतः tabsmain अंदर एक टुकड़ा से lf_ch परिवर्तन करना चाहते हैं;

public class tabquests extends Fragment{ 
    public CheckBox lc; 
@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)//onCreateView 
    { 
lc.setChecked(//set it to lf_ch); 

हालांकि, मैं lf_ch के मान तक पहुंच नहीं पा रहा हूं।

+2

मेरी 2 सेंट: स्थिर प्रसंग क्षेत्र बुरा, mkay ... और नाम convetion है ... वर्ग नाम 'tabsmain में केवल छोटे अक्षरों का उपयोग नहीं करने का प्रयास करें '=>' TabsMain '... var var (जैसे:' TabsMain tabsmain = null; ') नाम देने के लिए ठीक है, लेकिन जब आप इस कक्षा का उपयोग डेविड एम उत्तर में करते हैं तो यह जानना मुश्किल है कि टैबसमैन वर्ग का नाम या var है या नहीं .. । एंड्रॉइड एसडीके कक्षाएं, जावा कक्षाएं वे हमेशा पहले ऊपरी – Selvin

+0

का उपयोग करते हैं, मुझे आशा है कि आप इसे पोस्ट करने के बाद से एक या दो परिवर्तनीय नामकरण सम्मेलनों में रहे हैं :) –

उत्तर

48

इस प्रयास करें:

public View onCreateView(...){ 
    tabsmain xxx = (tabsmain)getActivity(); 
    lc.setChecked(xxx.lf_ch); 
} 
+0

यह केवल वैरिएबल पढ़ने में मदद करेगा ऑब्जेक्ट xxx के लिए es। हालांकि, अगर मैं दूसरे खंड में एक ही चर को पढ़ना चाहता हूं तो यह काम नहीं करेगा। –

+0

मैं इसे भी बदल सकता हूं। सुधार: आप सीधे टैबस्मेन के रूप में कर सकते हैं।lf_ch आप tabsmain.lf_ch = new_value –

0

कोशिश tabsmain.appContext.lf_ch कि चर का यू मूल्य दे देंगे।

कि गतिविधि में

इसके अलावा सेट appContext = this

0

इस

public boolean lf_ch=false; 
public class tabsmain extends Activity{ 

    public static Context appContext; 
    public void onCreate(Bundle savedInstanceState){ 
+3

के रूप में बदल सकते हैं क्या आप कृपया समझा सकते हैं? – Fabio

+0

मुझे यकीन नहीं है कि मैं अनुसरण करता हूं। यदि lf_ch टैबस्मेन क्लास में नहीं है, तो यह कहां है? –

-1

बदलें कोशिश: आप का उपयोग/साथ मूल्य बदल सकते हैं public static boolean lf_ch=false; : tabsmain.lf_ch

+3

केवल वैध कारण के साथ, गैर स्थैतिक से स्थैतिक से चर को स्विच न करें। – Hidde

0

आप निम्न को आज़मा सकते public boolean lf_ch=false; को विधि:

lc.setChecked(((yourpackagename)getActivity()).lf_ch); 
1

एक और तरीका है गतिविधि से डेटा प्राप्त करने के माध्यम से गतिविधि की मंशा का उपयोग करने की है:

getActivity.getIntent().getExtras(); 

और आदि

यह उपयोगी है अगर आप एक्सएमएल में टुकड़ा के साथ गतिविधि शुरू होता है, और नियंत्रित करने के लिए चाहते हैं हो सकता है किसी भी तरह खंड पर onCreate() व्यवहार।

पुनश्च: कारण की आप सबसे पहले आशय

13

के लिए कुछ करना चाहिए मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन यहाँ एक आसान जवाब है कि किसी भी हुप्स के माध्यम से कूद के बिना काम करते हैं। आप में फ्रैगमेंट एक वैरिएबल को परिभाषित करता है जो गतिविधि है कि उस पर टुकड़ा तब होगा जब क्रिएटिव व्यूअर को गतिविधि से जोड़ता है और फिर आपके पास एक संदर्भ है जो मुख्य गतिविधि में किसी भी सार्वजनिक चर को प्राप्त कर सकता है। जब मैं यहां समाप्त हुआ तो मैं इसे भूल गया था। दूसरी तरफ ऐसा करना मुश्किल है क्योंकि आपको दिखने वाले सटीक टुकड़े को खोजने की ज़रूरत है। हालांकि इसके साथ आपको इसे अन्य तरीके से करने की आवश्यकता नहीं है क्योंकि आप आसानी से चीजों को आगे और आगे भेज सकते हैं। मुझे आशा है कि इससे किसी भी व्यक्ति की मदद मिलेगी।

public Quiz_Avtivity mainQuiz; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_quiz, container, false); 

mainQuiz = (Quiz_Avtivity) getActivity(); 
//Below is where you get a variable from the main activity 
mainQuiz.AnyPublicVariable = whatEver; 
//also 
whatEver = mainQuiz.AnyPublicVariable 
+0

बहुत बहुत धन्यवाद: डी –

+0

कोई समस्या नहीं। मदद करने में खुशी। अगर यह मदद के लिए नहीं था तो मैं यहां प्राप्त कर चुका हूं, मैंने कभी भी कोई परियोजना पूरी नहीं की होगी। बस सोचा कि मैं वापस कर दूंगा क्योंकि मैं कर सकता था। –

+2

... इतना सच है! : डी ... स्टैक ओवरफ्लो टीम तक थम्स और हर कोई जो समुदाय को वापस देने के लिए समय लेता है! : डी –

0

इस तरह का प्रयास करें:

ViewPager mViewPager = (ViewPager) getActivity().findViewById(R.id.m_view_pager); 
+0

यदि आप गतिविधि के लेआउट से विचार प्राप्त करना चाहते हैं तो यह काम करेगा। – Aba

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