2012-03-25 2 views
0

Ich möchte das Layout der Tabelle zu implementieren.In, dass ich zwei Zeilen implementieren möchte, so habe ich Code wie folgt, aber es zeigt Kraft zu schließen. Kann eine Hilfe auf diesem ich bin auf diesem fest von 5 TagenTabelle Layout Problem in Android

public class SongsActivity extends Activity{ 

    DemoView demoview ; 
    DemoView2 finalview; 
    DemoView3 dview; 
    DemoView4 deview; 

    ViewFlipper c ; 
    TableLayout d; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.songs_layout); 
     demoview = new DemoView(this); 
     finalview = new DemoView2(this); 
     dview= new DemoView3(this); 
     deview = new DemoView4(this); 
     d= new TableLayout(this); 


     c=(ViewFlipper)findViewById(R.id.viewFlipper1); 
     c.addView(demoview,0); 
     c.addView(finalview, 1); 
     c.addView(dview, 2); 
     c.addView(deview, 3); 
     c.setAutoStart(true); 
     c.setFlipInterval(500); 
     c.startFlipping(); 



     TableRow rw1=new TableRow(this); 
     TableRow rw2=new TableRow(this); 
     TableRow.LayoutParams params = new TableRow.LayoutParams(); 
     params.span = 6; 
     rw1.addView(c); 
     //rw2.addView(); 
     d.addView(rw2); 
     d.addView(rw1); 
     setContentView(d); 
    } 

meine xML-Datei des Layouts, die im Programm verwendet wird, ist als

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/tableLayout1" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 

     <ViewFlipper 
      android:id="@+id/viewFlipper1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 
     </ViewFlipper> 


     <TableRow 
      android:id="@+id/tableRow2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 
     </TableRow> 

    </TableLayout> 

meine Log cat-Datei ist wie folgt zu folgen, den Fehler

03-25 

    20:56:35.963: E/AndroidRuntime(369): FATAL EXCEPTION: main 
    03-25 21:01:37.913: E/AndroidRuntime(399): FATAL EXCEPTION: main 
    03-25 21:01:37.913: E/AndroidRuntime(399): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.androidtablayout/com.example.androidtablayout.SongsActivity}: java.lang.ClassCastException: android.widget.LinearLayout 
    03-25 21:01:37.913: E/AndroidRuntime(399): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
    03-25 21:01:37.913: E/AndroidRuntime(399): at android.app.ActivityThread.startActivityNow(ActivityThread.java:2503) 
    03-25 21:01:37.913: E/AndroidRuntime(399): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127) 
    03-25 21:01:37.913: E/AndroidRuntime(399): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339) 
    03-25 21:01:37.913: E/AndroidRuntime(399): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:651) 
    03-25 21:01:37.913: E/AndroidRuntime(399): at android.widget.TabHost.setCurrentTab(TabHost.java:323) 
    03-25 21:01:37.913: E/AndroidRuntime(399): at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:129) 
    03-25 21:01:37.913: E/AndroidRuntime(399): at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:453) 
    03-25 21:01:37.913: E/AndroidRuntime(399): at android.view.View.performClick(View.java:2408) 
    03-25 21:01:37.913: E/AndroidRuntime(399): at android.view.View$PerformClick.run(View.java:8816) 
    03-25 21:01:37.913: E/AndroidRuntime(399): at android.os.Handler.handleCallback(Handler.java:587) 
    03-25 21:01:37.913: E/AndroidRuntime(399): at android.os.Handler.dispatchMessage(Handler.java:92) 
    03-25 21:01:37.913: E/AndroidRuntime(399): at android.os.Looper.loop(Looper.java:123) 
    03-25 21:01:37.913: E/AndroidRuntime(399): at android.app.ActivityThread.main(ActivityThread.java:4627) 
    03-25 21:01:37.913: E/AndroidRuntime(399): at java.lang.reflect.Method.invokeNative(Native Method) 
    03-25 21:01:37.913: E/AndroidRuntime(399): at java.lang.reflect.Method.invoke(Method.java:521) 
    03-25 21:01:37.913: E/AndroidRuntime(399): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
    03-25 21:01:37.913: E/AndroidRuntime(399): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
    03-25 21:01:37.913: E/AndroidRuntime(399): at dalvik.system.NativeStart.main(Native Method) 
    03-25 21:01:37.913: E/AndroidRuntime(399): Caused by: java.lang.ClassCastException: android.widget.LinearLayout 
    03-25 21:01:37.913: E/AndroidRuntime(399): at com.example.androidtablayout.SongsActivity.onCreate(SongsActivity.java:36) 
    03-25 21:01:37.913: E/AndroidRuntime(399): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
    03-25 21:01:37.913: E/AndroidRuntime(399): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
    03-25 21:01:37.913: E/AndroidRuntime(399): ... 18 more 
    03-25 21:42:25.942: E/AndroidRuntime(524): FATAL EXCEPTION: main 
    03-25 21:42:25.942: E/AndroidRuntime(524): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.androidtablayout/com.example.androidtablayout.SongsActivity}: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 
    03-25 21:42:25.942: E/AndroidRuntime(524): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at android.app.ActivityThread.startActivityNow(ActivityThread.java:2503) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:651) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at android.widget.TabHost.setCurrentTab(TabHost.java:323) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:129) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:453) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at android.view.View.performClick(View.java:2408) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at android.view.View$PerformClick.run(View.java:8816) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at android.os.Handler.handleCallback(Handler.java:587) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at android.os.Handler.dispatchMessage(Handler.java:92) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at android.os.Looper.loop(Looper.java:123) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at android.app.ActivityThread.main(ActivityThread.java:4627) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at java.lang.reflect.Method.invokeNative(Native Method) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at java.lang.reflect.Method.invoke(Method.java:521) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at dalvik.system.NativeStart.main(Native Method) 
    03-25 21:42:25.942: E/AndroidRuntime(524): Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 
    03-25 21:42:25.942: E/AndroidRuntime(524): at android.view.ViewGroup.addViewInner(ViewGroup.java:1970) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at android.view.ViewGroup.addView(ViewGroup.java:1865) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at android.view.ViewGroup.addView(ViewGroup.java:1822) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at android.view.ViewGroup.addView(ViewGroup.java:1802) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at com.example.androidtablayout.SongsActivity.onCreate(SongsActivity.java:51) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
    03-25 21:42:25.942: E/AndroidRuntime(524): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
    03-25 21:42:25.942: E/AndroidRuntime(524): ... 18 more 
zeigen
+0

Das angegebene Kind hat bereits ein Elternteil. Sie müssen zuerst removeView() für das übergeordnete Element des Kindes aufrufen. Problem mit LinearLayout. Zeigen Sie alle Ihre XML-Datei. –

Antwort

0

Sie versuchen, eine Zeile über die vorherige Zeile hinzuzufügen, weshalb Sie einen Laufzeitfehler erhalten. Zuerst entfernen Sie Ihre erste Zeile und fügen Sie dann die andere hinzu. Der Fehler ist ziemlich klar bei Stack-Trace.

java.lang.IllegalStateException: Das angegebene Kind hat bereits einen Elternteil. Sie müssen zuerst removeView() auf dem übergeordneten Element des Kindes aufrufen

+0

Kannst du das erklären, ich verstehe das nicht? – Ashishsingh

0

Also weiß ich nicht, was Sie erreichen möchten, aber es stürzt ab, weil Sie versuchen, den ViewFlipper der TableRow hinzuzufügen, aber es war schon "hinzugefügt" zum Aktivitätslayout (in der XML-Datei).

Es ist diese Zeile: rw1.addView(c);

+0

können Sie Ihre Antwort erarbeiten. Wenn ich nicht die Ansicht Flipper dann hinzufügen, wie es funktioniert – Ashishsingh

+0

Ich möchte zwei Zeilen erstellen.In der Zeile 1 möchte ich uns Viewflipper und in der zweiten möchte ich das 3D-Bild verwenden. – Ashishsingh