我在更新片段视图时遇到了困难...特别是,这些片段存在于带有ActionBarSherlock的ViewPager中。
这是我的片段类:
public class SearchFragment extends Fragment{
private String mInterests;
private String mSentence;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.bounty_search_layout, container, false);
}
@Override
public void onResume() {
super.onResume();
getUserInterests();
}
/*
* Get the users interests from the underlying
* data store.
*/
public void getUserInterests() {
TextView tv = (TextView) getView().findViewById(R.id.bounty_search_txtResult);
DatabaseHelper dbHelper = new DatabaseHelper(getActivity());
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query(DatabaseConstants.TABLE_NAME, null, null, null, null, null, null);
cursor.moveToFirst();
mInterests = cursor.getString(cursor.getColumnIndex(DatabaseConstants.INTERESTS));
if(mInterests.length() == 0) {
mSentence = "You have no interests.";
}
else {
mSentence = "Your interests are: ";
mInterests = cursor.getString(cursor.getColumnIndex(DatabaseConstants.INTERESTS));
}
tv.setText(mSentence + mInterests);
cursor.close();
db.close();
dbHelper.close();
}
}
我从FragmentActivity调用这个片段的方式如下...
SearchFragment searchInterests = new SearchFragment();
当片段首次运行时,我的视图已经正确设置,但是当我调用类似于...
searchInterests.update();
从FragmentActivity中更新某些视图,需要在getView()方法中进行操作。
TextView tv = (TextView) getView().findViewById(R.id.results);
返回 null 并失败。我很难理解为什么会这样。有人告诉我,这是因为我的 Fragment 没有附加到任何东西上... 我不太理解这一部分,而且我也不理解为什么如果 onCreateView 第一次成功,getView() 会指向 null? getView() 不是获取 onCreateView 返回的 View 吗?以下是完整的代码集:https://gist.github.com/1369653