0

我有一个不扩展的类Activity(并且不能扩展,因为它扩展了CursorAdapterCursorAdapter需要与它填充的片段进行通信,更具体地说,在每个列表项中都有一个按钮,每当单击该按钮时,我都需要它来刷新列表,为此我需要调用getFragmentManager().

我的问题:因为我正在扩展CursorAdapter我无法调用getFragmentManager()(它必须从片段或活动中调用。)

我已经尝试过。我想做的第一件事(这可能是正确的,由于我缺乏 Java 技能,我只是搞砸了实现)是创建一个扩展 Activity 的类,该类将与我的光标适配器的片段接口。代码:

public class FragManager extends Activity {

   public FragManager() {
   }

    public void refreshList() {

        QCListFragment fragmentB = (QCListFragment) getFragmentManager().findFragmentById(R.id.listFragment);
        fragmentB.requeryList();
    }


}

这是在我的光标适配器内部调用的,如下所示。代码:

FragManager fragment = new FragManager();
            fragment.refreshList();

无论如何,我认为这是正确的思路,但无法找到教程(可能是因为我不知道用什么词来搜索它)

任何帮助都会很棒!马立克

4

2 回答 2

1

我现在不知道你的代码结构,但是如果你的任何类是嵌套的,你可以访问包含的类,如下所示:

public class MyActivity extends Activity {

    private MyAdapter adapter = new MyAdapter();

    public class MyAdapter extends CursorAdapter {

        public MyAdapter() {
            FragmentManager fm = MyActivity.this.getFragmentManager();
        }
    }
}

如果不使用嵌套,则可以将类的实例直接传递给需要访问它的类。

public class MyActivity extends Activity {

    private MyAdapter adapter = new MyAdapter(this);
}

public class MyAdapter extends CursorAdapter {

    public MyAdapter(Activity activity, Cursor c, int flags) {
        super(activity, c, flags);
        FragmentManager fm = activity.getFragmentManager();
    }
}
于 2013-05-31T00:20:36.593 回答
0

你想requeryList()从那里打电话Activity

首先,我Activity应该扩展FragmentActivity.

以下是在所有情况下调用该方法的方法:

((QCListFragment) getSupportFragmentManager().findFragmentById(R.id.listFragment)).requeryList();

Fragment从a调用方法Fragment

((QCListFragment) getFragmentManager().findFragmentById(R.id.listFragment)).requeryList();

FragmentActivity从a调用方法Fragment

((QCLisActivity) getActivity()).requeryList();
于 2013-05-31T00:41:31.403 回答