2012-11-16 130 views
2

我有一个的FrameLayout作为一个滑动抽屉,我是用片段取代的内容。当我的活动开始时,FrameLayout被一个GridView片段取代。当我点击GridView中的一个项目时,它将用TextView片段替换FrameLayout。这个新的片段有一个返回的按钮,并用GridView片段再次替换FrameLayout。这一切都可以正常工作,但由于某种原因,GridView和TextView在更改时都没有刷新,但是当我点击一个从服务器获取信息的按钮之后,该信息会在新信息刷新时显示。有没有办法让android认为我需要重绘GridView和TextView?我已经尝试过在所有地方都无效(),它似乎没有丝毫工作。看起来像android正在调用GridView适配器上的“getView”方法,然后它刷新,但是当片段更改为gridview时从未调用过。GridView的片段不清爽

很抱歉的混乱问题和解释,我真的不知道作什么岗位代码,因为有这么多。我会根据请求更新代码。请帮忙!谢谢。

这里是上单击框架布局被替换为一个TextView布局:

playerGridView = (GridView) findViewById(R.id.playerInfoGrid); 
    if (playerGridView != null) { 
     playerGridView.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
       drawerFragment2 = new topFrag(); 
       FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
       transaction.replace(R.id.frag_content, drawerFragment2); 
       transaction.addToBackStack(null); 
       transaction.commit(); 
      } 
     }); 
    } 

这里是topFrag是什么:

public class topFrag extends Fragment { 

private TextView view; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.slidingdrawer2, container, false); 
} 

@Override 
public void onStart() { 
    super.onStart(); 
    view = (TextView) getView().findViewById(R.id.characterInfo); 
    view.setText("hello"); 
} 

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
} 
} 

主要布局有内部的FrameLayout:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" >  
<SlidingDrawer 
    android:id="@+id/drawer" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:topOffset="125dip" 
    android:handle="@+id/handle" 
    android:content="@+id/frag_content"> 

    <ImageView 
     android:id="@+id/handle" 
     android:contentDescription="@string/handle" 
     android:layout_width="120dip" 
     android:layout_height="30dip" 
     android:src="@drawable/drawertab"/> 

    <FrameLayout 
     android:id="@+id/frag_content" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</SlidingDrawer> 

</RelativeLayout> 

这里是我与更换的FrameLayout:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#50808080" > 

<TextView 
    android:id="@+id/characterInfo" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@+id/playerInfoBack" 
    android:text="" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:textColor="#FFFFFF" /> 

<Button 
    android:id="@+id/playerInfoBack" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:text="@string/back" 
    android:onClick="back" /> 

</RelativeLayout> 

不知道这是否有助于解决问题,或者让问题变得更加混乱。

当您在playerGridView上单击一个项目时,它会用一个新的“topFrag”(首先显示)替换framelayout(主布局),该按钮通过按钮使用textview布局扩展片段。我只是想在点击一个项目后更新hello。感谢您的期待!

回答

0

为GridView您将调用notifyDataSetChanged()适配器支持GridView控件,以便它知道要更新。

对于TextView的我不得不看的代码来了解什么是对那里发生的。

+0

我试图做一个notifyDataSetChanged()为GridView并不会影响它在所有。我用更简单的文本视图进行编辑。感谢您的尝试! – coolbox

+0

原来,片段的onStart方法需要在其中设置文本。谢谢您的帮助! – coolbox