दिलचस्प पोस्ट
सी ++ में पॉइंटर द्वारा अपवाद को पकड़ो एंड्रॉइड: वर्टिकल व्यूपेजर कैसे (* SKIP) या (* F) regex पर काम करते हैं? जावास्क्रिप्ट में दिनांक के बीच अंतर तिथि स्वरूप डीडी / एमएम / य्याय को मान्य करने के लिए रेगेक्स मेरी स्पिनर जीआईएफ स्टॉप करते हैं, जबकि jQuery के एजेक्स कॉल चल रहा है? स्ट्रिंग से एक क्लास का निर्माण करना और इसे स्काला 2.10 में इंस्टाल्ट करना कैसे Accessstoken का उपयोग कर ग्राफ एपीआई के माध्यम से संदेश फेसबुक मित्र को भेजें जावास्क्रिप्ट: जो ब्राउज़र आईएसओ -8601 दिनांक स्ट्रिंग का दिनांक के साथ पार्सिंग का समर्थन करते हैं स्क्रीन के आकार, वर्तमान वेब पेज और ब्राउज़र विंडो को प्राप्त करें अजगर सूची में किसी आइटम की अंतिम घटना कैसे प्राप्त करें कोणीय 2 http नहीं मिल रहा है कैसे स्वचालित रूप से फसल और एक छवि केंद्र केंद्रित करने के लिए ActionBarCompat: java.lang.IllegalStateException: आपको एक थीम का उपयोग करना होगा। AppCompat PHP सिंगलटन वर्गों पर सर्वोत्तम अभ्यास

एंड्रॉइड: रैखिक लेआउट के लिए एक पाठ दृश्यता प्रोग्राम जोड़ें

मैं कोड में अपने XML-defined लेआउट में TextViews जोड़ने का प्रयास कर रहा हूं। मेरे पास एक XML-sheet है, जहां बहुत सारे Views परिभाषित किए जाते हैं। लेकिन मुझे कुछ दृश्यों को कोड में जोड़ना होगा, ताकि एक्सएमएल-शीट में एक LinearLayout बनाएं:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:id="@+id/info" android:layout_height="wrap_content" android:orientation="vertical"> </LinearLayout> 

और इस लेआउट में, मैं अपना TextView जोड़ना चाहता हूं:

  View linearLayout = findViewById(R.id.info); //LinearLayout layout = (LinearLayout) findViewById(R.id.info); TextView valueTV = new TextView(this); valueTV.setText("hallo hallo"); valueTV.setId(5); valueTV.setLayoutParams(new LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); ((LinearLayout) linearLayout).addView(valueTV); 

लेकिन मुझे केवल निम्न त्रुटि संदेश मिलता है:

 : java.lang.ClassCastException: android.widget.TextView 

मैं यह कैसे कर सकता हूं?

मदद के लिये शुक्रिया। मार्टिन

वेब के समाधान से एकत्रित समाधान "एंड्रॉइड: रैखिक लेआउट के लिए एक पाठ दृश्यता प्रोग्राम जोड़ें"

उपयोग करने का प्रयास करें

 LinearLayout linearLayout = (LinearLayout)findViewById(R.id.info); ... linearLayout.addView(valueTV); 

यह भी सुनिश्चित करें कि आप जो लेआउट पैरामाइयां बना रहे हैं वह LinearLayout.LayoutParams …

हे मैंने आपके कोड की जांच की है, आपके कोड में कोई गंभीर त्रुटि नहीं है। यह पूर्ण कोड है:

main.xml: –

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

यह स्टैकहोवरफ्लो.जावा है

 import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.LinearLayout; import android.widget.TextView; public class Stackoverflow extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); View linearLayout = findViewById(R.id.info); //LinearLayout layout = (LinearLayout) findViewById(R.id.info); TextView valueTV = new TextView(this); valueTV.setText("hallo hallo"); valueTV.setId(5); valueTV.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT)); ((LinearLayout) linearLayout).addView(valueTV); } } 

इस कोड को कॉपी करें, और इसे चलाएं। यह पूरी तरह त्रुटि मुक्त है ध्यान रखें…

 for(int j=0;j<30;j++) { LinearLayout childLayout = new LinearLayout(MainActivity.this); LinearLayout.LayoutParams linearParams = new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); childLayout.setLayoutParams(linearParams); TextView mType = new TextView(MainActivity.this); TextView mValue = new TextView(MainActivity.this); mType.setLayoutParams(new TableLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f)); mValue.setLayoutParams(new TableLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f)); mType.setTextSize(17); mType.setPadding(5, 3, 0, 3); mType.setTypeface(Typeface.DEFAULT_BOLD); mType.setGravity(Gravity.LEFT | Gravity.CENTER); mValue.setTextSize(16); mValue.setPadding(5, 3, 0, 3); mValue.setTypeface(null, Typeface.ITALIC); mValue.setGravity(Gravity.LEFT | Gravity.CENTER); mType.setText("111"); mValue.setText("111"); childLayout.addView(mValue, 0); childLayout.addView(mType, 0); linear.addView(childLayout); } 

आप अपने रैखिक लेआउट में एक TextView प्रोग्राम को इस तरह जोड़ सकते हैं:

 LinearLayout linearLayout = (LinearLayout) findViewById(R.id.mylayout); TextView txt1 = new TextView(MyClass.this); linearLayout.setBackgroundColor(Color.TRANSPARENT); linearLayout.addView(txt1); 

आपको लेआउट संसाधन के माध्यम से लेआउट तक पहुंचने की आवश्यकता है, एक आईडी संसाधन नहीं है जो अद्वितीय की गारंटी नहीं है। संसाधन का संदर्भ R.layout.my_cool_layout जैसा दिखना चाहिए, जहां आपका उपरोक्त XML लेआउट res / layout / my_cool_layout.xml में संग्रहीत किया गया है।

 LinearLayout.LayoutParams layoutParams ; layoutParams= new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 

यहां पर अपवाद तब होता है जहां

 ((LinearLayout) linearLayout).addView(valueTV); 

addView विधि प्रकार के एक पैरामीटर में लेता है, नहीं, addView View । इसलिए, valueTv ऑब्जेक्ट को एक ऑब्जेक्ट में टाइप करें, स्पष्ट रूप से

इसलिए, सही कोड होगा:

 ((LinearLayout) linearLayout).addView((TextView)valueTV);