2011-10-19 12 views
7

में बनाए गए घटक के लिए मूल सक्रियता के सामग्री दृश्य को कैसे सेट करें जावा में बनाए गए घटक (जैसे फ़्रेमलाउट, छवि दृश्य, आदि) में मूल सक्रियता की सामग्री सेट करने का कोई तरीका है? मुझे नेटिव एक्टिविटी (एक्सपीरिया प्ले पर टचपैड इनपुट प्राप्त करने के लिए) का उपयोग करने की आवश्यकता है, लेकिन मुझे जावा कोड में बनाए गए घटकों को देखने में भी सक्षम होना चाहिए।जावा

मैंने ऑनक्रेट कमांड को ओवरराइड करने और सेटकंटेंट व्यू को कॉल करने का प्रयास किया है, लेकिन हालांकि यह कोई त्रुटि नहीं फेंकता है, यह कुछ भी नहीं करता है (जाहिर है क्योंकि सामग्री दृश्य पहले ही देशी कोड द्वारा सेट किया गया है)। क्या वहां कुछ प्रकार की विंडो आईडी या कुछ है जो मैं देशी कोड को पास कर सकता हूं ताकि यह बताने के लिए कि सामग्री दृश्य क्या होना चाहिए, या यह किसी भी तरह से एक्सएमएल में स्थापित किया जा सकता है ताकि मूल एक्टिविटी के कंटेंट व्यू को उस घटक में सेट किया जा सके जिसे मैं संशोधित कर सकता हूं जावा से?

मुझे बताएं कि आपको और जानकारी चाहिए या नहीं।

+0

क्या आपने इस समस्या को हल किया है, मैं एक समान काम करने की कोशिश कर रहा हूं। सोनी द्वारा प्रदान किया गया दस्तावेज भयानक है! – Kevin

उत्तर

12

मैं यहां एक ही समस्या के साथ दूसरों के लिए उत्तर पोस्ट करूंगा, क्योंकि आखिर में मैंने काम करने वाली विधि को समझ लिया था।

विधि OnCreate() में, यदि आप किसी विशेष खिड़की झंडे (FEATURE_NO_TITLE, FLAG_FULLSCREEN, FLAG_KEEP_SCREEN_ON, आदि) की स्थापना कर रहे हैं जो लोग इससे पहले कि आप super.onCreate() फोन (या उन्हें अनदेखा कर दिया जाएगा)। तो फिर तुम आम तौर पर इस डाल जहाँ भी होगा:

setContentView(whatever); 

इस बजाय कार्य करें:

getWindow().takeSurface(null); 
getWindow().setContentView(whatever); 

सामग्री जावा की ओर से नियंत्रित किया जा करने के लिए बुनियादी तरीका है कि। आपके कोड में कोई भी स्थान जहां आप सामग्री से निपटते हैं, "इस" के बजाय "getWindow()" का उपयोग करें।

कुछ अन्य बातों को ध्यान में रखना, यह सामान्य है कि ऑन और ऑन टच विधियों को नहीं कहा जाएगा (उनके मूल समकक्ष इसके बजाए होंगे), इसलिए यदि आपको जावा पक्ष पर इनपुट संसाधित करने में सक्षम होना चाहिए, तो आप ' मूल से जावा में जानकारी भेजने के लिए कुछ जेएनआई लिंकेज स्थापित करना होगा। मेरा मानना ​​है कि बाकी सब कुछ आधिकारिक एक्सपीरिया प्ले टचपैड नमूना कोड (AndroidManifest.xml और क्या नहीं है) में शामिल है।

आप संदर्भ के लिए अपने प्रोजेक्ट को देखने के लिए चाहते हैं, यह खुला स्रोत है और में पाया जा सकता:

http://www.paulscode.com/forum/index.php?topic=75.msg1540#msg1540

बस "स्रोत कोड" लिंक "एक्सपीरिया प्ले करने के लिए स्पर्श आगे क्लिक करें पैड उदाहरण "। यह आपके लिए उपयोगी नहीं हो सकता है, क्योंकि यह एक बड़ी परियोजना है और जो भी आप ढूंढ रहे हैं उसे ढूंढना मुश्किल हो सकता है। यदि आपको कोई समस्या है, तो मेरे मंच पर कोई प्रश्न पोस्ट करें या मुझे ईमेल करें, और मुझे सहायता करने में खुशी होगी।

+2

दिलचस्प दृष्टिकोण। मैं एक मूल सक्रियता के भीतर अपने स्वयं के लेआउट का उपयोग करने में कामयाब रहे। मुझे अभी भी एक सी ++ लाइब्रेरी द्वारा प्रस्तुत किया गया है जो प्रदर्शित करने की आवश्यकता है (इस मामले में कोकोस 2 डी-एक्स 3.x)। क्या SurfaceView या इसी तरह एम्बेड करने का कोई तरीका है और इसे C++ कोड से बांधें? – Soflete

+0

@paulscode लिंक जो आप भेजते हैं वह 404 है या –

+0

@AmitHooda लिंक ठीक है, लेकिन आपका आईपी अवरुद्ध हो सकता है (मेरे होस्ट में सख्त एंटी-स्पैम उपाय हैं) – paulscode