2013-08-22 50 views
2

一個片段我解釋的事情是非常糟糕的,我會盡力做到最好:)從另一個調用

我試圖在每個選項卡使用Tabhost和顯示列表片段。

[在TabView的ListFragments]:enter image description here

這是它的外觀。

點擊列表元素,調用另一個片段來顯示細節,它顯示如下。 [點擊列表元素]:enter image description here 有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)] 「 TabView的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> 
    

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

在此先感謝

+1

發佈您的代碼和logcat以及。 – GrIsHu

+1

如果以下內容不幫助提供代碼片段 – FraZer

回答

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)] " 

請致電在UI線程notifyDataSetChanged()yourListView.requestLayout()加入items.The後問題是綁定到Adapter的集合在後臺線程中更改。因此,解決方案是將其移動到UI線程(如上所述)或簡單地用runOnUiThread()包裝它。

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

要調用另一個片段中的電流:

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

編輯:

顯示明細片段全屏,請以下更改:

  1. 在你的滾動視圖 與android:layout_height="fill_parent"

  2. 更換android:layout_height="wrap_content"在你TableLayout 與android:layout_height="fill_parent"

+0

謝謝您的回覆。第一個問題已解決:)但第二個問題是新的片段只有一半的屏幕,即它顯示在列表片段的上方。我想要這個片段採取完整的場景 – user1743673

+0

我很高興你的第一個問題得到解決。 Plz提供相關的xml文件。 –

+0

我發佈了xml文件。 – user1743673

0

對於上面你需要簡單地添加你只需要實例的片段:

對於示例 -

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

感謝您的回覆。我已經做好了。我現在面臨的問題是:單擊listFragment時,它不會出現在完整的scree上,它只會出現在屏幕的某個部分。正如我在圖2中所示 – user1743673

0

更換android:layout_height="wrap_content"試試這個例子

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

它真的幫助你用碎片從另一個分段。

0

使用hadler來通知您的列表,因爲您不能從後臺或工作線程訪問任何UIComponent,所以它必須從UI線程訪問。確保使用下面的技巧。

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

@Override 
public void run() { 
    listadapter.notifyDataSetChanged(); 
    } 
});