1

我正在尝试写入 ListFragment 中的 sqlite 数据库,问题在于从该片段中获取上下文。

奇怪的是,调用 getActivity() 会返回 onActivityCreated 方法中的上下文,而不是其他地方(即使在调用之后)。我什至尝试从那里将上下文存储在类变量 mContext 中,但是下次我访问该变量时,它又变回了 null!

关于这里发生了什么的任何想法?片段生命周期中发生了什么奇怪的事情?

公共类 DayFragment 扩展 ListFragment {

private String day;
private Context mContext;

public DayFragment() {
}


public String getDay() {
    return day;
}

public void setDay(String day) {
    this.day = day;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    String[] values = new String[] { day, "Android", "iPhone", "WindowsMobile" };
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, values);

    setListAdapter(adapter);

}

@Override
public void onActivityCreated(Bundle savedInstanceState)
{
    super.onActivityCreated(savedInstanceState);
    mContext = this.getActivity();
}


public void createEntry() {
    EntriesDataSource datasource = new EntriesDataSource(mContext);
    datasource.open();
    Entry entry = new Entry();
    entry.setDay(day);
    entry.setTitle("ok");
    entry.setTime("09:00");
}
}
4

1 回答 1

1

根据这个问题这个问题的回答,如果你还没有附加你的片段,它不会返回一个上下文。

从第二个问题:

我建议添加一个

onAttach(Activity activity) 方法到您的片段并在其上放置一个断点并查看相对于您对“asd()”的调用何时调用它。您会看到它是在您调用“asd()”的方法退出后调用的。'onAttach' 调用是片段附加到其活动的地方,从这一点开始 getActivity() 将返回非空值(nb 还有一个 onDetach() 调用)。

希望这可以帮助。

于 2013-09-12T15:14:58.010 回答