我有一个的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。感谢您的期待!
我试图做一个notifyDataSetChanged()为GridView并不会影响它在所有。我用更简单的文本视图进行编辑。感谢您的尝试! – coolbox
原来,片段的onStart方法需要在其中设置文本。谢谢您的帮助! – coolbox