从MainActivity刷新当前片段

时间:2015-12-17 18:54:07

标签: android listview android-fragments fragment

我希望当我在ListView中添加新项目时,片段会刷新。

我读过很多帖子,但有什么。我试图添加:

fragTransaction.detach(currentFragment);
fragTransaction.attach(currentFragment);
fragTransaction.commit();

或其他事情,但我无法做到。

这是碎片:

public class GiocatoFragment extends Fragment {

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View v  = inflater.inflate(R.layout.fragment_giocato, null);
    ListView giocatoList = (ListView)v.findViewById(R.id.listView_giocato);

    Cursor cursor = MainActivity.userDb.getGames(ClasseDiAppoggio.getConsole(), "Giocato");
    String[] fromFieldNames = new String[] {UserDataBase.COL_VIDEOGAME_NAME, UserDataBase.COL_VIDEOGAME_DEVELOPER, UserDataBase.COL_VIDEOGAME_VALUE};
    int[] toViewsIDs = new int[] {R.id.textView_game_name, R.id.textView_developper, R.id.textView_value};
    SimpleCursorAdapter myCursorAdapter = new SimpleCursorAdapter(this.getContext(), R.layout.game_row, cursor, fromFieldNames, toViewsIDs, 0);
    giocatoList.setAdapter(myCursorAdapter);

    return v;
}

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);


    if (isVisibleToUser) {
        ClasseDiAppoggio.setItem("Giocato");
    }
}

}

以下是在数据库中添加项目的方法。

    private void addGame(String game, String console) {


    myDb.getGame(game);

    userDb.addGame(console, game, ClasseDiAppoggio.getItem());

    TextView txt = (TextView) findViewById(R.id.textView);
    txt.setText(DataBase.gameInfo[0] + ", " + DataBase.gameInfo[1]);




}

我该怎么办?

1 个答案:

答案 0 :(得分:0)

如果您正在获取活动中的arraylist或从活动中的db获取,那么从活动中您可以将本地广播从活动发送到片段并且可以在片段中接收该广播并且可以从db获取数据并且可以从此处获取操作列表并可以通知列表,否则你可以在片段中创建一个方法,并从活动中调用该片段的实例调用,在该方法中你可以从db中获取列表并显示它。