Проблема размещения таблиц в Android - PullRequest
0 голосов
/ 25 марта 2012

Я хочу реализовать макет таблицы. В этом я хочу реализовать две строки, поэтому у меня есть код, как показано ниже, но он показывает силу, чтобы закрыть. Может быть, любая помощь по этому вопросу, я застрял на этом из пяти дней

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);
    }

Мой XML-файл макета, который используется в программе, выглядит следующим образом

<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>

Мой файл журнала журнала выглядит следующим образом, показывая ошибку

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

Ответы [ 2 ]

0 голосов
/ 25 марта 2012

Итак, я не знаю, что вы пытаетесь выполнить, но это дает сбой, потому что вы пытаетесь добавить ViewFlipper в TableRow, но он уже «добавлен» в макет действия (в xml) .

Вот эта строка: rw1.addView(c);

0 голосов
/ 25 марта 2012

Вы пытаетесь добавить строку поверх предыдущей, поэтому вы получаете ошибку времени выполнения. Сначала удалите свою первую строку, а затем добавьте другую. Ошибка довольно ясна при трассировке стека.

java.lang.IllegalStateException: указанный дочерний элемент уже имеет родителя. Сначала вы должны вызвать removeView () у родителя ребенка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...