2013-03-30 6 views
8

मैं जानता हूँ कि इस तरह इसी तरह के सवाल का जवाब दिया गया, लेकिन मैंने किया है क्या ट्यूटोरियल सुझाव और अन्य पदों से पढ़ने लगते हैं, लेकिन अभी भी मैं Inflator मिल त्रुटि। निश्चित नहीं कि मुझसे कौन सी गलती हो रही है। कृपया कोड जांचें। बहुत बहुत धन्यवाद।android.view.InflateException: बाइनरी एक्सएमएल फ़ाइल लाइन # 7: त्रुटि चढ़ा वर्ग टुकड़ा

संपादित करें: मैं एक गतिविधि में दो टुकड़े की है। मेरे पास एक टुकड़े में एक बटन है और दूसरे में एक टेक्स्टव्यू है। मैं समझने की कोशिश कर रहा हूं कि टुकड़े कैसे काम करते हैं इसलिए मैंने दस्तावेज़ को पढ़ने के बाद स्वयं को यह कोड बनाया। जब बटन एक टुकड़े में ट्रिगर होता है तो यह गतिविधि में दूसरे टुकड़े के लिए एक मूल्य भेजता है। मैं बढ़ाने के लिए

MainActivity.java

 import com.transport.mbtalocpro.PredictedTimeFragment.ButtonClickListener; 
     import android.os.Bundle; 
     import android.support.v4.app.FragmentActivity; 


     public class MainActivity extends FragmentActivity implements ButtonClickListener { 

      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_main); 
      } 


      @Override 
      public void sendCounter(int count) { 
       TestFrag testF = (TestFrag) getSupportFragmentManager().findFragmentById(R.id.bottomHalf); 
       if(testF != null) testF.setCounter(String.valueOf(count)); 

      } 

     } 

PredictedTimeFragment.java

  import android.app.Activity; 
      import android.os.Bundle; 
      import android.support.v4.app.Fragment; 
      import android.view.InflateException; 
      import android.view.LayoutInflater; 
      import android.view.View; 
      import android.view.View.OnClickListener; 
      import android.view.ViewGroup; 
      import android.widget.Button; 

      public class PredictedTimeFragment extends Fragment { 


      ButtonClickListener bListener; 

      public interface ButtonClickListener { 
       public void sendCounter(int count); 
      } 

      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
       super.onCreateView(inflater, container, savedInstanceState); 
       try { 
        View view = inflater.inflate(R.layout.prediction_time, container, false); 
        Button button = (Button) view.findViewById(R.id.test); 
        button.setOnClickListener(new OnClickListener() { 

         @Override 
         public void onClick(View v) { 
          test(v); 

         } 
        }); 
       } catch(InflateException e) { 
        e.printStackTrace(); 
        System.out.println("Predicted Time Fragment"); 
       } 
       return super.onCreateView(inflater, container, savedInstanceState); 
      } 

      public void onAttach(Activity activity) { 
        super.onAttach(activity); 
        try { 
        bListener = (ButtonClickListener) activity; 
        } catch (ClassCastException e) { 
        System.out.println("must implemenet Listener"); 
        } 
       } 


      public void test(View view) { 
       bListener.sendCounter(23); 
      } 

     } 

TestFrag.java

 import android.os.Bundle; 
     import android.support.v4.app.Fragment; 
     import android.view.InflateException; 
     import android.view.LayoutInflater; 
     import android.view.View; 
     import android.view.ViewGroup; 
     import android.widget.TextView; 

     public class TestFrag extends Fragment { 

      @Override 
      public View onCreateView(LayoutInflater inflator, ViewGroup container, Bundle savedInstanceState) { 
       super.onCreateView(inflator, container, savedInstanceState); 
       try { 
        View view = inflator.inflate(R.layout.test_frag, container, false); 
       } catch(InflateException e) { 
        e.printStackTrace(); 
        System.out.println("Test Fragment"); 
       } 
       return super.onCreateView(inflator, container, savedInstanceState); 
      } 

      public void setCounter(String textS) { 
       TextView text = (TextView) getView().findViewById(R.id.test1); 
       text.setText((String) textS); 
      } 
     } 
टुकड़ा प्राप्त करने में सक्षम नहीं कर रहा हूँ

activity_main.xml

 <?xml version="1.0" encoding="utf-8"?> 
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical"> 

      <fragment 
       android:id="@+id/topHalf" 
       android:layout_width="fill_parent" 
       android:layout_height="0dp" 
       android:layout_weight="0.5" 
       android:name="com.transport.mbtalocpro.PredictedTimeFragment"/> 

      <fragment 
       android:id="@+id/bottomHalf"   
       android:layout_width="fill_parent"   
       android:layout_height="0dp" 
       android:layout_weight="0.5" 
       android:name ="com.transport.mbtalocpro.TestFrag"/> 

     </LinearLayout> 

predicted_time.xml

 <?xml version="1.0" encoding="utf-8"?> 
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical" > 

      <Button 
       android:id="@+id/test" 
       android:text="Test" 
       android:layout_width="fill_parent" 
       android:layout_height="30dp" 
       /> 

     </LinearLayout> 

test_frag.xml

 <?xml version="1.0" encoding="utf-8"?> 
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical" > 

      <TextView 
       android:id="@+id/test1" 
       android:layout_width="fill_parent" 
       android:layout_height="40dp"/> 

     </LinearLayout> 

मैं भी पूर्व शहद कंघी संस्करणों का समर्थन करने के लिए कोशिश कर रहा हूँ और मुझे लगता है कि मैं अल आयात कर रहा हूं मैं समर्थन पुस्तकालयों।

+1

आसपास कोड फेंकने से शायद आपकी मदद करने के लिए किसी को प्रोत्साहित नहीं किया जाएगा। कुछ बुनियादी विवरण भयानक होंगे। – WarrenFaith

+0

@WarrenFaith - मैंने कोड के बारे में कुछ विवरण जोड़े। उसके लिए माफ़ करना। मैं जल्दी में था। धन्यवाद। – Guru

+0

आपको क्रिएटिव्यू की सवारी पर अपने टुकड़ों में से किसी भी सुपर कॉल की आवश्यकता नहीं है; बस अपना विचार वापस कर दें। – wkhatch

उत्तर

0

android.support.v4.app.Fragment

संपादित साथ अपने xml में टुकड़ा के बजाय ऐसे: इसके अलावा सुपर कॉल करने के लिए जब आप केवल एक बार onCreateView अर्थात में अपने विचारों के साथ किया जाता है की कोशिश करो। शुरुआत में सुपर का कॉल निकालना और देखते हैं कि अगर मदद करता है

+0

मैंने कोशिश की, काम नहीं किया। – Guru

+0

क्या आपने अपनी कॉल को सुपर पर हटाने का प्रयास किया था? चूंकि आप इसे दो बार बुला रहे हैं। क्या आप लॉगकैट पोस्ट कर सकते हैं? –

+0

असल में मैंने अपना काम घटाया और यह काम करना शुरू कर दिया, मुझे विश्वास है कि यह एक्सएमएल (एंड्रॉइड: नाम) में खंड में नाम हो सकता है, मैंने इसे वर्ग = "खंड वर्ग का नाम" में बदल दिया लेकिन मैंने इसे एक बार किया था इससे पहले, यह काम नहीं किया था। निश्चित नहीं है कि उपर्युक्त कोड क्यों काम नहीं करता है। चलो, आपकी मदद के लिए धन्यवाद। – Guru

1

onCreateView कॉलबैक आप दृश्य वापस लौटाना होगा में, जो आप फुलाया। इस तरह से सिस्टम जानता है कि आकर्षित करने के लिए कौन सा विचार है। अन्यथा, अगर आप सुपर .onCreateView (...) इस तरह से वापस आते हैं, तो कोई UI दिखाई नहीं देगा।

इस प्रयास करें: तदनुसार अन्य टुकड़ा की

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     super.onCreateView(inflater, container, savedInstanceState); 
     try { 
      View view = inflater.inflate(R.layout.prediction_time, container, false); 
      Button button = (Button) view.findViewById(R.id.test); 
      button.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        test(v); 

       } 
      }); 
     } catch(InflateException e) { 
      e.printStackTrace(); 
      System.out.println("Predicted Time Fragment"); 
     } 
     return view; 
    } 

बदलें वापसी मान। पॉप-अप आयात सुझाव के साथ फिर से

import android.support.v4.app.FragmentActivity; 

और आयात:

+0

मुझे लगता है कि यह एक पुराना है और सही समाधान के साथ wkhatch की टिप्पणी है। –

3

अपने आयात बयान को हटा दें। मुझे नहीं पता क्यों, लेकिन यह हमेशा मेरे लिए काम करता है।

प्रकट में:

import android.support.v4.app.FragmentActivity; 
1

त्रुटि को ठीक करने

<application 
     android:largeHeap="true" 

.xml फ़ाइल में, आप नीचे दिए गए कोड को निकालना होगा:

android:src="@drawable.. 
android:background="@drawable... 

क्योंकि त्रुटि बाहर है मेमोरी त्रुटि

0

अपना बदलें लेआउट विजेट आईडी, यह मेरे लिए काम करता है।

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