2

我在解释事情方面很糟糕,我会尽力做到最好:)

我试图使用 Tabhost 并在每个选项卡中显示列表片段。

[标签视图中的列表片段]:在此处输入图像描述

这就是它的外观。

单击列表元素时,会调用另一个片段来显示详细信息,如下所示。[单击列表元素]:在此处输入图像描述 有2个问题。

  1. DetailsFragment 不是全屏的。即能够看到列表(你可以在上图中看到)
  2. 当我返回选项卡视图并单击列表时,它显示: "java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread[in ListView(16908298, class android.widget.ListView) with Adapter(class android.widget.SimpleAdapter)] " 选项卡视图 xml:

    <TabHost
        android:id="@android:id/tabhost"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical" >
    
            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="0"
                android:orientation="horizontal" />
    
            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:layout_weight="0" />
    
            <FrameLayout
                android:id="@+android:id/realtabcontent"
                android:layout_width="fill_parent"
                android:layout_height="0dp"
                android:layout_weight="1" />
        </LinearLayout>
    </TabHost>
    

详细信息片段 xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_container1"
    android:layout_width="match_parent"
    android:layout_height="fill_parent" >

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#ffffff"
            android:shrinkColumns="*"
            android:stretchColumns="*" >

            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="50dip"
                android:gravity="center_horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:text="Msg Id"
                    android:textColor="#000000"
                    android:textSize="13sp" />

                <TextView
                    android:id="@+id/tv1"
                    android:layout_weight="1"
                    android:background="#a09f9f"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:textColor="#000000"
                    android:textSize="13sp" />
            </TableRow>

            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:text="PID"
                    android:textColor="#000000"
                    android:textSize="13sp" />

                <TextView
                    android:id="@+id/tv2"
                    android:layout_weight="1"
                    android:background="#a09f9f"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:textColor="#000000"
                    android:textSize="13sp" />
            </TableRow>

            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:text="Sender BS"
                    android:textColor="#000000"
                    android:textSize="13sp" />

                <TextView
                    android:id="@+id/tv3"
                    android:layout_weight="1"
                    android:background="#a09f9f"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:textColor="#000000"
                    android:textSize="13sp" />
            </TableRow>

            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:text="Sender NS"
                    android:textColor="#000000"
                    android:textSize="13sp" />

                <TextView
                    android:id="@+id/tv4"
                    android:layout_weight="1"
                    android:background="#a09f9f"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:textColor="#000000"
                    android:textSize="13sp" />
            </TableRow>

            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:text="Sender Interface"
                    android:textColor="#000000"
                    android:textSize="13sp" />

                <TextView
                    android:id="@+id/tv5"
                    android:layout_weight="1"
                    android:background="#a09f9f"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:textColor="#000000"
                    android:textSize="13sp" />
            </TableRow>

            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:text="Receiver BS"
                    android:textColor="#000000"
                    android:textSize="13sp" />

                <TextView
                    android:id="@+id/tv6"
                    android:layout_weight="1"
                    android:background="#a09f9f"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:textColor="#000000"
                    android:textSize="13sp" />
            </TableRow>

            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:text="Receiver NS"
                    android:textColor="#000000"
                    android:textSize="13sp" />

                <TextView
                    android:id="@+id/tv7"
                    android:layout_weight="1"
                    android:background="#a09f9f"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:textColor="#000000"
                    android:textSize="13sp" />
            </TableRow>

            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:text="Receiver Interface"
                    android:textColor="#000000"
                    android:textSize="13sp" />

                <TextView
                    android:id="@+id/tv8"
                    android:layout_weight="1"
                    android:background="#a09f9f"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:textColor="#000000"
                    android:textSize="13sp" />
            </TableRow>

            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:text="Msg Type"
                    android:textColor="#000000"
                    android:textSize="13sp" />

                <TextView
                    android:id="@+id/tv9"
                    android:layout_weight="1"
                    android:background="#a09f9f"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:textColor="#000000"
                    android:textSize="13sp" />
            </TableRow>

            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:text="Msg State"
                    android:textColor="#000000"
                    android:textSize="13sp" />

                <TextView
                    android:id="@+id/tv10"
                    android:layout_weight="1"
                    android:background="#a09f9f"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:textColor="#000000"
                    android:textSize="13sp" />
            </TableRow>

            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:text="Exe Time"
                    android:textColor="#000000"
                    android:textSize="13sp" />

                <TextView
                    android:id="@+id/tv11"
                    android:layout_weight="1"
                    android:background="#a09f9f"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:textColor="#000000"
                    android:textSize="13sp" />
            </TableRow>

            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:text="Init Time"
                    android:textColor="#000000"
                    android:textSize="13sp" />

                <TextView
                    android:id="@+id/tv12"
                    android:layout_weight="1"
                    android:background="#a09f9f"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:textColor="#000000"
                    android:textSize="13sp" />
            </TableRow>

            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:text="Send Time"
                    android:textColor="#000000"
                    android:textSize="13sp" />

                <TextView
                    android:id="@+id/tv13"
                    android:layout_weight="1"
                    android:background="#a09f9f"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:textColor="#000000"
                    android:textSize="13sp" />
            </TableRow>

            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:text="Admin User"
                    android:textColor="#000000"
                    android:textSize="13sp" />

                <TextView
                    android:id="@+id/tv14"
                    android:layout_weight="1"
                    android:background="#a09f9f"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:textColor="#000000"
                    android:textSize="13sp" />
            </TableRow>

            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:text="Payload"
                    android:textColor="#000000"
                    android:textSize="13sp" />

                <TextView
                    android:id="@+id/tv15"
                    android:layout_weight="1"
                    android:background="#a09f9f"
                    android:gravity="center"
                    android:paddingBottom="5sp"
                    android:paddingTop="5sp"
                    android:textColor="#000000"
                    android:textSize="13sp" />
            </TableRow>
        </TableLayout>
    </ScrollView>

</FrameLayout>

提前致谢

4

4 回答 4

5
java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification.

Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(16908298, class android.widget.ListView) with Adapter(class android.widget.SimpleAdapter)] "

Please call notifyDataSetChanged() and yourListView.requestLayout() in the UI thread after adding items.The problem is that your collection that bound to Adapter is changed in the Background thread. Hence the solution is moving it to UI thread(as I stated above) or simply wrapping it with runOnUiThread().

runOnUiThread(new Runnable() {
  public void run() {
    your_collection.add(item);
    your_adapter.notifyDataSetChanged();
    yourListView.requestLayout();
  }
});

To call another fragment the current:

SecondFragment secFrag = new SecondFragment();
FragmentTransaction fragTransaction = getFragmentManager().beginTransaction();
                    fragTransaction.replace(R.id.frame_fragment,secFrag );
                    fragTransaction.addToBackStack(null);
                    fragTransaction.commit();

EDIT:

To Display Detail fragment full Screen, please make following changes:

  1. In your scrollView Replace android:layout_height="wrap_content" with android:layout_height="fill_parent"

  2. In your TableLayout Replace android:layout_height="wrap_content" with android:layout_height="fill_parent"

于 2013-08-22T08:30:06.693 回答
0

对于上述情况,您只需添加一个片段,您只需要一个实例:

例如-

FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Search fragment = new  Search();
fragmentTransaction.add(R.id.mainLayout,fragment , "MY_FRAG");
fragmentTransaction.commit();
于 2013-08-22T08:28:24.033 回答
0

试试这个例子

FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    Search fragment = new  Search();
    fragmentTransaction.add(R.id.mainLayout,fragment , "MY_FRAG");
    fragmentTransaction.commit();

它确实帮助您使用来自另一个片段的片段。

于 2013-08-22T08:31:19.453 回答
0

使用 hadler 通知您的列表,因为您无法从后台或工作线程访问任何 UIComponents,因此必须从 UI 线程访问。确保使用以下技巧。

Handler mHandler = new Handler();
mHandler.post(new Runnable() {

@Override
public void run() {
    listadapter.notifyDataSetChanged();
    }
});
于 2013-08-22T08:31:51.783 回答