2012-01-06 7 views
9

ग्रहण और एंड्रॉइड एसडीके का उपयोग करके, मैंने एक बटन और प्रोग्रेसबार के साथ एक सरल परीक्षण ऐप प्रबंधित किया। सभी ठीक चलते हैं, सिवाय इसके कि मैं प्रोग्रेसबार को बटन को स्थानांतरित नहीं करना चाहता था, जब प्रोग्रेसबार दिखाई देता था, इसलिए केवल परीक्षण के लिए मैंने ऑर्डर बदल दिया कि उन्हें res/layout/main.xml फ़ाइल में परिभाषित किया गया है (जो एक का उपयोग करता है LinearLayout)। संकलन और दौड़ने के बाद मुझे नीचे "अंतिम प्रगतिबार ..." पंक्ति पर क्लासकास्ट अपवाद प्राप्त होता है।main.xml में बदल गया क्रम, अब मुझे क्लासकास्टएक्सप्शन

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    /* 01-06 14:37:39.590: E/AndroidRuntime(863): java.lang.RuntimeException: 
     java.lang.ClassCastException: android.widget.Button cannot be cast to 
     android.widget.ProgressBar */ 
    final ProgressBar progressbar = (ProgressBar) findViewById(R.id.progressBar1); /* here */ 
    progressbar.setVisibility(ProgressBar.GONE); 

    final Button exebutton = (Button)findViewById(R.id.button1); 
    exebutton.setOnClickListener(new View.OnClickListener() 
    // etc... 

अब, मैं समझ क्या ClasCastException कहते हैं और इसका मतलब है, मैं बस समझ में नहीं आता क्यों यह प्रकट होता है। मैं एक प्रोग्रेसबार में एक बटन डालने की कोशिश नहीं कर रहा हूं। मुझे यह नहीं मिला ...

+0

कृपया आप अपनी main.xml फ़ाइल भी जोड़ सकते हैं? ऐसा लगता है कि आप एक बटन को प्रोग्रेसबार के रूप में डालने की कोशिश कर रहे हैं। – Ivan

+1

नहीं, मैं कम से कम नहीं जानता हूं (पोस्ट देखें)। यह आरजेवा था जिसे अद्यतन नहीं किया गया था, नीचे देखें। – OppfinnarJocke

+0

अपनी परियोजना को साफ करने और पुनर्निर्माण करने का प्रयास करें। और main.xml फ़ाइल पेस्ट करें ताकि हम जांच सकें कि क्या अन्य समस्याएं हैं (एक ऑब्जेक्ट को हटाने और इसे फिर से जोड़ने का प्रयास करें)। सफाई के लिए – Ivan

उत्तर

20

प्रोजेक्ट की सफाई करने का प्रयास करें ताकि आर क्लास फिर से उत्पन्न हो जाए। कभी-कभी मान अपडेट नहीं होते हैं।

+1

+1। एंड्रॉइड एसडीके कई बार "भ्रमित" हो सकता है - यह उनमें से एक है। XML फ़ाइलों में परिवर्तन करते समय इसे साफ़ करना सबसे अच्छा होता है। ग्रहण के डिफ़ॉल्ट व्यवहार के बीच, और एसडीके क्या करता है, मुझे लगता है कि परियोजना अक्सर बिल्ड या रनटाइम त्रुटियों को प्राप्त करती है। संदेह में, "साफ" ... –

+1

आह! सफाई ने किया धन्यवाद – OppfinnarJocke

+1

उत्कृष्ट। कृपया उत्तर स्वीकार करने पर विचार करें ताकि यह अनुत्तरित न रहे। – sfratini

6

यह इस लाइन की तरह दिखता है:

final ProgressBar progressbar = (ProgressBar) findViewById(R.id.progressBar1); /* here */ 

एक प्रगति बार करने के लिए एक बटन कास्टिंग है।

इसका मतलब है कि findViewByIdR.id.progressBar1 के लिए बटन लौटाता है।

चूंकि आप कह रहे हैं कि आपने ऑर्डर बदल दिया है, ऐसा लगता है कि यह आईडी अभी भी बटन से मेल खाती है। यह जेनरेट की गई फ़ाइल के साथ किसी समस्या को इंगित करता है। मैं एक परियोजना/स्वच्छ करता हूं।

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